首页 > 编程语言 >python+playwright 学习-79 设置全局导航超时和全局查找元素超时

python+playwright 学习-79 设置全局导航超时和全局查找元素超时

时间:2023-08-28 21:56:28浏览次数:40  
标签:playwright timeout default set context 全局 超时 page

前言

playwright 默认全局的导航时间是30秒,查找元素超时也是30秒, 有以下几个方法设置全局超时时间:

  • browser_context.set_default_navigation_timeout()
  • browser_context.set_default_timeout()
  • page.set_default_navigation_timeout()
  • page.set_default_timeout()

导航超时设置

当访问的网页加载很慢时

from playwright.sync_api import sync_playwright, expect


with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context()


    page = context.new_page()

    # 访问浏览器页面
    page.goto('https://www.cnblogs.com/')

会报一个超时的异常:TimeoutError: Timeout 30000ms exceeded.

playwright._impl._api_types.TimeoutError: Timeout 30000ms exceeded.
=========================== logs ===========================
navigating to "https://www.cnblogs.com/", waiting until "load"
============================================================

可以在goto() 访问网站的时候设置timeout超时时间

    # 访问浏览器页面
    page.goto('https://www.cnblogs.com/', timeout=10000)

也可以设置全局超时

from playwright.sync_api import sync_playwright, expect


with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context()
    # 设置全局40秒超时
    context.set_default_navigation_timeout(40000)

    page = context.new_page()

    # 访问浏览器页面
    page.goto('https://www.cnblogs.com/')

设置全局导航超时

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 对象都有设置超时时间

from playwright.sync_api import sync_playwright, expect


with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context()
    # 设置全局context 40秒超时
    context.set_default_navigation_timeout(40000)

    page = context.new_page()
    # page 页面对象超时 20秒
    page.set_default_navigation_timeout(20000)

    # 访问浏览器页面
    page.goto('https://www.cnblogs.com/', timeout=1000)

那么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

标签:playwright,timeout,default,set,context,全局,超时,page
From: https://www.cnblogs.com/yoyoketang/p/17663469.html

相关文章

  • python+playwright 学习-78 获取浏览器cookies
    前言playwright操作浏览器上的页面后,后续如果想结合其他的框架操作接口(如:requests),可以直接获取到浏览器的cookies。context.cookies()获取浏览器cookies使用示例fromplaywright.sync_apiimportsync_playwright,expectwithsync_playwright()asp:browser=......
  • 全局调用链路traceId网关到业务层、feign调用统一问题记录
           项目里面使用的traceId是基于skywalking进行打印的,但是实际使用的过程中发现网关处的traceId为空,而且feign调用其他服务时候的traceId都不一样。显示如下:       网关traceId为空:           基于此,想要把项目里面的......
  • python+playwright 学习-77 playwright 发送接口请求APIRequestContext
    前言每个Playwright浏览器上下文都有与其关联的APIRequestContext实例,该实例与浏览器上下文共享cookie存储,可以通过browser_context.request或page.request访问。也可以通过调用api_request.new_context()手动创建一个新的APIRequest上下文实例。通过浏览器发请求可以通过browser......
  • 微服务15:微服务治理之超时
    ★微服务系列微服务1:微服务及其演进史微服务2:微服务全景架构微服务3:微服务拆分策略微服务4:服务注册与发现微服务5:服务注册与发现(实践篇)微服务6:通信之网关微服务7:通信之RPC微服务8:通信之RPC实践篇(附源码)微服务9:服务治理来保证高可用微服务10:系统服务熔断、限流微服务11......
  • plt.rcParams运行时修改全局配置参数
    plt.rcParams简单介绍plt.rcParams即"运行时配置参数"("runtimeconfigurationparameters"),是运行时配置参数而不是永久性地更改默认配置,一次性地设置多个参数,以便于创建具有一致样式的图表,但是如果你只想对特定图形进行样式修改,最好直接在绘制代码中使用相关的函数和参数。(......
  • python+playwright 学习-76 playwright 忽略SSL 错误
    前言playwright设置ignore_https_errors参数忽略SSL错误context上下文中设置browser.new_context()创建上下文时fromplaywright.sync_apiimportsync_playwright,expectwithsync_playwright()asp:browser=p.chromium.launch(headless=False)conte......
  • windows 桌面GUI自动化- 17.pywinauto 设置全局等待时间Timings
    前言pywinauto查找窗口和控件时会有超时时间与轮询机制,可以通过timings模块设置全局等待时间。timings模块timings模块有三个模式可以设置timings.Timings.fast()快速模式timings.Timings.defaults()默认模式timings.Timings.slow()慢速模式以下是可以调整的......
  • 软件测试|web自动化测试神器playwright教程(三十七)
    使用Playwright的highlight()方法突出显示Web元素简介Playwright是一个强大的自动化测试工具,可以与Python集成,用于测试Web应用程序和执行自动化任务。其中,highlight()方法是Playwright的一个有用功能,可以突出显示Web页面上的元素,方便调试和可视化操作。本文将介绍Playwright库......
  • 石油石化行业网络监控运维方案,全局态势感知,实时预警
        石油石化行业是一个高科技密集型行业,投资巨大、人员众多,各产业价值链的关联度较高,大型石油石化企业实现了上中下游产业的一体化协同发展。随着工业4.0时代的来临,信息化和工业化融合,物联网、云计算等新技术的普及推广,在驶入智能化赛道后,石油石化行业也在经济高速发展的......
  • 超时处理@Timeout注解
    importorg.junit.jupiter.api.BeforeEach;importorg.junit.jupiter.api.Test;importorg.junit.jupiter.api.Timeout;importstaticjava.lang.Thread.sleep;classTimeoutExampleTest{@Test@Timeout(7)voidtimeoutDemo1()throwsInterruptedExceptio......