Python写UI自动化--playwright(等待页面加载机制)
很多情况下,我们都需要等待页面加载到一定程度才能进行下一步操作,而这个度该怎么操作,这篇文章就来详细讲一讲
目录
expect_popup()
wait_until参数
"load"
'commit':
"domcontentloaded"
"networkidle"
"networkidle0" 和 "networkidle2"
多状态组合
expect_popup()
首先常见的情况是我们在现有的页面上执行某些操作(如点击一个链接或按钮)时,可能会触发新的浏览器窗口或标签页的打开,expect_popup()是playwright中用于处理新打开的浏览器窗口或标签页的方法。expect_popup()允许我们等待并捕获这个新打开的窗口或标签页,以便进行进一步的操作或测试。
下面是一个简单的例子,展示了如何使用expect_popup():
from playwright.sync_api import Pagedef test_except_popup(page: Page):page.goto(url='https://www.baidu.com')page.locator('//input[@name="wd"]').fill("百度百科")page.get_by_text('百度一下').click()with page.expect_popup() as new_page: # page.expect_popup() 获取新页面,监听是否到达新页面page.get_by_role("link", name="百度百科 - 百度百科").click()new_page1=new_page.valueexpect(new_page1.get_by_role("button", name="进入词条").first).to_be_visible()
get_by_role方法可以根据元素的角色(例如按钮、输入框、链接等)来选择元素
"button": 按钮
"link": 链接
expect_popup() 的返回值
expect_popup()返回一个PopupInfo对象,这个对象包含了新打开的窗口或标签页的引用。可以通过value属性获取到这个引用,然后像操作任何其他页面一样操作这个新页面
expect_popup()是Playwright中处理新打开窗口或标签页的重要方法,通过它可以确保自动化测试脚本能正确地与新打开的页面进行交互。如果在测试过程中遇到了打开新窗口或标签页的场景,就可以用到expect_popup()!
wait_until参数
用于指定playwright应该等待页面达到什么状态之后再继续执行后续的脚本。wait_until参数对于页面加载策略至关重要,不同的值会影响脚本的执行效率和稳定性。下面是wait_until参数的不同选项及其效果和适用场景的详细介绍::
"load"
·含义: 等待页面的load事件,这是页面加载完成的标准事件,意味着所有的资源都已经加载完毕。
·使用场景: 如果需要确保页面上所有的资源(如图片、样式表、脚本文件)都已经加载完成,可以选择此选项。但请注意,这通常会导致最长的等待时间。
用法如下:
page.goto('目标URL', wait_until="load")
'commit':
当浏览器提交请求开始加载页面时立即继续执行
用法如下:
page.goto('目标URL', wait_until="commit")
"domcontentloaded"
·含义: 等待DOMContentLoaded事件,这意味着DOM树已经构建完成,页面已经可以进行交互,但外部资源可能还在加载。
·默认值: 自Playwright版本1.16起,"domcontentloaded"成为wait_until的默认值。
·使用场景: 对于大多数测试用例来说,这是最佳的选择,因为它在保证页面基本可交互的同时,提供了较快的响应速度。
用法如下:
page.goto('目标URL', wait_until="domcontentloaded")
"networkidle"
·含义: 等待网络空闲,即没有HTTP请求正在进行。这通常意味着页面已完全加载,包括所有依赖资源。
·使用场景: 当你进行全页面截图、PDF生成或需要页面完全渲染完成的场景时,这个选项很有用。
用法如下:
page.goto('目标URL', wait_until="networkidle")
"networkidle0" 和 "networkidle2"
·含义: 这两个选项与"networkidle"类似,但它们对网络空闲状态的定义更为细致。
·"networkidle0": 允许少量数据下载,如字体文件。
·"networkidle2": 更加严格,几乎所有的网络活动都必须停止。
使用场景: 这些选项适用于需要更精确控制页面加载状态的高级测试用例。
多状态组合
wait_until可以接受一个状态数组,以等待多个事件全部发生。例如,想要等待页面加载完成并且网络空闲,可以同时等待"domcontentloaded"和"networkidle",以确保DOM就绪且所有资源加载完成。
page.goto('目标URL', wait_until=["domcontentloaded", "networkidle"])
正确选择wait_until的值对于确保自动化测试的准确性和效率至关重要。通常情况下,"domcontentloaded"是一个很好的平衡点,但如果测试需求特殊,可以考虑使用其他选项或组合使用以达到更精细的控制。
相关文章:
Python写UI自动化--playwright(等待页面加载机制)
很多情况下,我们都需要等待页面加载到一定程度才能进行下一步操作,而这个度该怎么操作,这篇文章就来详细讲一讲 目录 expect_popup() wait_until参数 "load" commit: "domcontentloaded" "networkidle"…...
书籍将整数字符串转成整数值(5)0804
题目 给定一个字符串str,如果str符合日常书写的整数形式,并且属于32位整数的范围,返回str所代表的整数值,否则返回0。 举例 str“123” 返回 123 str“023” 因为023 不符合日常的书写习惯,所以返回0 str“A13” …...
【2024年华数杯C题老外游中国】(完整题解+代码+完整参考论文)
请问 352 个城市中所有 35200 个景点评分的最高分(Best Score,简称 BS)是多少?全国有多少个景点获评了这个最高评分(BS)?获评了这个最高评分(BS)景点最多的城市有哪些&am…...
全球氢化双酚A (HBPA)市场规划预测:2030年市场规模将接近1330亿元,未来六年CAGR为2.7%
一、引言 随着全球化工行业的持续发展,氢化双酚A (HBPA)作为重要的化工原料,其市场重要性日益凸显。本文旨在探索HBPA行业的发展趋势、潜在商机及其未来展望。 二、市场趋势 全球HBPA市场的增长主要受全球化工行业增加、消费者对高性能化工产品要求提高…...
【C++】异常处理:深度解析与实战精髓,不容错过的编程秘籍
🌈 个人主页:Zfox_ 🔥 系列专栏:C从入门到精通 目录 🚀 前言:C语言传统的处理错误的方式 一: 🔥 C异常概念二: 🔥 异常的使用 2.1 📖 异常的抛出和…...
智能指针的循环引用 是什么 怎么引起的
智能指针的循环引用 是什么 怎么引起的 智能指针的循环引用(Circular Reference)是指两个或多个对象之间的共享指针相互引用,导致这些对象永远不会被释放,从而引发内存泄露。主要发生在使用std::shared_ptr时,因为它们…...
Stegdetect教程:如何用Stegdetect检测和破解JPG图像隐写信息
一、Stegdetect简介 Stegdetect 是一个开源工具,专门设计用于检测图像文件(JPG格式)中的隐写信息。Stegdetect 可以检测多种常见的隐写方法,比如 JSteg、JPHide 和 OutGuess 等。 二、使用Stegdetect检测图像隐写 官方描述&#…...
Co-Detr
参考:https://www.bilibili.com/video/BV1Sh4y1F7ur/?spm_id_from333.788&vd_source156234c72054035c149dcb072202e6be 之前的detr正样本数量少,匹配不平衡。 主要修改两个地方:encoder和decoder。 1.在encoder之后加入RPN,a…...
校园选课助手【1】-项目整体架构从此开始
项目背景 随着高校招生规模的不断扩大,学生选课需求日益增长。为提高选课效率,降低学生选课压力,本项目旨在开发一款校园选课助手软件。 项目目标:开发一款具有以下特点的校园选课助手软件: 易用性:界面简洁ÿ…...
椭圆曲线加法运算
1. 定义 椭圆曲线 (Elliptic Curve) 不是函数,而是一条平面曲线,其方程是定义如下: y 2 x 3 a x b y^2x^3axb y2x3axb 其中,判别式 Δ − 16 ( 4 a 3 27 b 2 ) ≠ 0 \Delta -16(4a^327b^2)\neq 0 Δ−16(4a327b2)0。判别…...
(STM32笔记)九、RCC时钟树与时钟 第一部分
我用的是正点的STM32F103来进行学习,板子和教程是野火的指南者。 之后的这个系列笔记开头未标明的话,用的也是这个板子和教程。 九、RCC时钟树与时钟 九、RCC时钟树与时钟1、时钟树HSE时钟HSI时钟锁相环时钟系统时钟HCLK时钟PCLK1时钟PCLK2时钟RTC时钟独…...
fastjson-流程分析
参考视频:fasfjson反序列化漏洞1-流程分析 分析版本 fastjson1.2.24 JDK 8u65 分析过程 新建Person类 public class Person {private String name;private int age;public Person() {System.out.println("constructor_0");}public Person(String na…...
Linux 命令安装
系列文章目录 提示:仅用于个人学习,进行查漏补缺使用。 1.Linux介绍、目录结构、文件基本属性、Shell 2.Linux常用命令 3.Linux文件管理 4.Linux 命令安装 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助…...
清华和字节联合推出的视频理解大模型video-SALMONN(ICML 2024)
video-SALMONN: Speech-Enhanced Audio-Visual Large Language Models 论文信息 paper:https://arxiv.org/abs/2406.15704 code:https://github.com/bytedance/SALMONN/ AI也会「刷抖音」!清华领衔发布短视频全模态理解新模型 | ICML 2024 …...
从数据爬取到可视化展示:Flask框架与ECharts深度解析
目录 🔹 Flask框架源码解析 Flask应用初始化路由与视图函数请求与响应中间件 🔹 ECharts可视化精讲 ECharts安装与配置基本图表类型图表样式与交互高级图表配置与数据动态更新实战:结合Flask与ECharts展示爬取数据 Flask框架源码解析 &…...
【jvm】类加载分几步
目录 1. 加载(Loading)2. 链接(Linking)2.1 验证(Verification)2.2 准备(Preparation)2.3 解析(Resolution) 3. 初始化(Initialization࿰…...
使用Apache http client发送json数据(demo)
POM依赖 : <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.12</version></dependency><dependency><groupId>com.alibaba</groupId&g…...
读零信任网络:在不可信网络中构建安全系统07设备信任
1. 设备信任 1.1. 在零信任网络中建立设备信任至关重要,这也是非常困难的一个环节 1.2. 建立设备信任是基石,直接影响零信任网络架构的成败 1.3. 大多数网络安全事件都和攻击者获得信任设备的控制权相关,这种情况一旦发生,信任…...
【Java算法专场】前缀和(下)
目录 和为 K 的子数组 算法分析 算法步骤 算法代码 算法示例 和可被 K 整除的子数组 算法分析 同余定理 负数取余 算法步骤 算法代码 算法示例 连续数组 算法分析 算法步骤 算法代码 算法示例 矩阵区域和 算法分析 算法步骤 算法代码 算法示例 算法分析 …...
音视频相关文章总目录
为了方便各位观看,本文置顶,以目录形式汇集我写过的大部分音视频专题文章。之后文章更新,本目录也会同步更新。写得不好和零零散散的文章就不放在这里了😅 : 音视频入门基础:像素格式专题系列文章&#x…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
