自学内容网 自学内容网

python+playwright自动化测试(三):事件等待机制

目录

goto设置等待

强制等待wait_for_timeout

wait_for

wait_for_selector

wait_for_load_state

wait_for_url

wait_for_event

wait_for_function


playwright中的timeout默认为30s,timeout=30000,有时需要根据具体情况进行自定义调整。

goto设置等待

page.goto('https://www.baidu.com', wait_until='commit', timeout=50000)

wait_until:包含"commit", "domcontentloaded", "load", "networkidle",wait_until参数可以是一个值,也可以时多个值的数组,以等待多个事件全部发生,如wait_until=["domcontentloaded", "networkidle"]。

load---页面加载完成的标准事件。使用场景:用来确保页面上所有的资源(如图片、样式表、脚本文件)都加载完成。但通常会导致最长的等待时间。

commit---当浏览器提交请求开始加载页面时立即执行。

domcontentloaded---等待DOMContentLoaded事件,在DOM树已经构建完成,页面可以进行交互,但外部资源可能还在加载时使用。Playwright版本1.16开始,"domcontentloaded"成为wait_until的默认值。它可以在保证页面基本可交互的同时,提供了较快的响应速度,是测试的最佳选择。

networkidle---等待网络空闲,没有HTTP请求时进行。需要等页面和所有依赖资源完全加载。在进行全页面截图、PDF生成或需要页面完全渲染成功时,使用此项。networkidle可包含networkidle0和networkidle2,networkidle0允许如字体文件等少量数据下载,networkidle2需要等待几乎所有的网络活动都必须停止。

强制等待wait_for_timeout

相当于time.sleep(),设置一个等待的超时时间,‌它允许程序在执行某些操作前等待指定的时间。‌如果在设定的时间内操作未完成,‌则可能会抛出超时错误。‌

page.wait_for_timeout(timeout=2000)

wait_for

需要跟在定位查询后面使用

page.locator('xpath=//a[@id="result_logo"]').wait_for(timeout=2000, state='attached')

可设置超时时长timeout和等待状态类型state(默认为visible,可选值有"attached", "detached", "hidden", "visible")。

attached---等待元素出现在DOM中。
detached---等待元素从DOM中移除。
visible----等待元素可见(出现)。
hidden---等待元素不可见(等待元素隐藏消失)。

wait_for_selector

page.wait_for_selector('xpath=//a[@id="result_logo"]')

可设置超时时间timeout,等待状态类型state,state设置取值同wait_for。

wait_for()和wait_for_selector()的使用区别:前者返回None,后面不能继续操作元素,后者返回locator对象,后面可以继续操作元素。

wait_for_load_state

page.wait_for_load_state()

用于等待页面达到特定的加载状态(等待事件被触发和事件被加载完成),参数只有timeout和state。state的值有"domcontentloaded", "load", "networkidle"。参数值描述参见上面的goto。

wait_for_url

page.wait_for_url(url='http://XXXXX.com')

用来等待主框架导航到给定的url,参数:url、wait_until、timeout,wait_until的参数有"commit", "domcontentloaded", "load", "networkidle",默认为load。

wait_for_event

等待指定事件触发,如果提供了断言函数,会将事件值传给断言函数,并等待断言函数返回真值。较expect_event 方法更简洁,适合在不需要直接操作事件值时使用。

参数event表示要等待的事件名称。

wait_for_function

用来处理复杂页面操作和等待逻辑,参数如下:

expression:字符串,JavaScript 表达式。若表达式求值为函数,会自动调用该函数。

arg:要传递给表达式的可选参数。

polling:数字或"raf"(默认值),如果为'raf',表达式会在回调中不断执行。为数字时,表示执行该函数的时间间隔。

timeout:超时时间。


原文地址:https://blog.csdn.net/JBY2020/article/details/145209287

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!