python+playwright 学习-79 设置全局导航超时和全局查找元素超时
前言
playwright 默认全局的导航时间是30秒,查找元素超时也是30秒, 有以下几个方法设置全局超时时间:
- browser_context.set_default_navigation_timeout()
- browser_context.set_default_timeout()
- page.set_default_navigation_timeout()
- page.set_default_timeout()
导航超时设置
当访问的网页加载很慢时
会报一个超时的异常:TimeoutError: Timeout 30000ms exceeded.
可以在goto() 访问网站的时候设置timeout超时时间
也可以设置全局超时
设置全局导航超时
set_default_navigation_timeout 设置的时间只对以下方法有效:
- page.go_back()
- page.go_forward()
- page.goto()
- page.reload()
- page.set_content()
- page.expect_navigation()
设置全局超时有2种方式:
方式1.在context对象设置全局导航页面超时
# context
context.set_default_navigation_timeout(40000)
方式2.在page对象设置全局导航页面超时
# page 页面对象超时 20秒
page.set_default_navigation_timeout(20000)
如果goto()和page对象,context 对象都有设置超时时间
那么goto()设置的优先级大于page对象,page对象设置的大于context对象设置的超时时间。
设置操作元素超时
默认情况下,操作元素时,查找元素超时时间是30秒
# 操作元素
page.locator('text=找不到元素').click()
点击元素时,找不到会报超时异常TimeoutError: Timeout 30000ms exceeded.
playwright._impl._api_types.TimeoutError: Timeout 30000ms exceeded.
=========================== logs ===========================
waiting for locator("text=找不到元素")
============================================================
可以针对单次操作click() 方法传timeout 参数
page.locator('text=找不到元素').click(timeout=1000)
设置全局操作元素timeout 超时
context = browser.new_context()
context.set_default_timeout(3000)
page = context.new_page()
page.set_default_timeout(2000)
与前面设置导航超时时间一样,也是可以在context 和page对象设置timeout。
优先级:单次操作设置的timeout > page.set_default_timeout() > context.set_default_timeout()
需注意的是:set_default_timeout设置的时间不仅仅对操作元素有效,对前面的页面导航也会生效。
set_default_timeout 与 set_default_navigation_timeout 优先级:
page.set_default_navigation_timeout() > page.set_default_timeout() > browser_context.set_default_navigation_timeout() > browser_context.set_default_timeout()
2023最新《Playwright+Python自动化测试》点我 ->立即参与
联系微信:283340479