当前位置: 首页 > wzjs >正文

博罗做网站公司电商数据网站

博罗做网站公司,电商数据网站,网站建设读后感,长沙网站制作公司简介 Playwright 可以与网页对话框进行交互,例如警告(alert)、确认(confirm)、提示(prompt)以及卸载前确认(beforeunload confirmation)。对于打印对话框,请…

简介

Playwright 可以与网页对话框进行交互,例如警告(alert)、确认(confirm)、提示(prompt)以及卸载前确认(beforeunload  confirmation)。对于打印对话框,请参阅打印( Print)部分。

alert()、confirm()、prompt() 对话框

默认情况下,Playwright 会自动关闭对话框,因此您无需手动处理它们。但是,您可以在触发对话框的操作之前注册一个对话框处理程序,以便使用 dialog.accept() 或 dialog.dismiss() 方法来接受或关闭对话框。这样,您就可以根据测试需要控制对话框的行为,模拟用户的点击操作。

page.on("dialog", lambda dialog: dialog.accept())
page.get_by_role("button").click()

注意

您必须为 page.on("dialog") 监听器处理对话框。否则,您的操作(无论是 locator.click() 还是其他任何操作)将会停滞不前。这是因为 Web 中的对话框是模态的,因此会阻塞页面的进一步执行,直到对话框被处理完毕。这意味着,如果您没有为可能出现的对话框注册处理程序,那么触发对话框的操作将会等待对话框被处理后才能继续执行,这可能会导致测试脚本挂起或超时。

因此,下面的代码片段将永远无法解析:

page.on("dialog", lambda dialog: print(dialog.message))
page.get_by_role("button").click() # Will hang here

请注意
如果page.on("dialog")没有监听器,则所有对话框都将自动取消。

beforeunload 对话框

当以 run_before_unload=True 的参数调用 page.close() 方法时,页面会运行其卸载处理程序。这是 page.close()  方法不等待页面实际关闭的唯一情况,因为最终页面可能仍然保持打开状态。

您可以注册一个对话框处理程序来自行处理 beforeunload 对话框:

def handle_dialog(dialog):  assert dialog.type == 'beforeunload'  dialog.dismiss()  # 拒绝离开页面  page.on('dialog', lambda: handle_dialog)    
page.close(run_before_unload=True)  # 尝试关闭页面,并运行beforeunload处理程序

handle_dialog 函数会检查对话框的类型是否为 'beforeunload',并调用 dialog.dismiss() 方法来拒绝离开页面。在注册事件监听器时,使用 lambda 表达式,传递函数名。然后,调用 page.close(run_before_unload=True) 会尝试关闭页面,并在尝试关闭之前运行 beforeunload 对话框的处理程序。

打印对话框

为了验证是否通过  window.print 触发了打印对话框,您可以使用以下代码片段:

page.goto("<url>")  # 导航到目标网页  # 在页面上注入JavaScript代码,用于拦截print函数调用并等待  
page.evaluate("""  
(() => {  // 重写window.print函数,使其返回一个Promise,以便我们可以等待它  window.originalPrint = window.print;  // 保存原始的print函数  window.waitForPrintDialog = new Promise(resolve => {  window.print = function() {  // 当print被调用时,解决Promise,但不执行实际的打印操作  resolve();  // 可以选择调用原始的print函数,如果需要实际打印的话  // window.originalPrint();  };  });  
})()  
""")  # 点击触发打印的按钮  
page.get_by_text("Print it!").click()  # 等待打印对话框的Promise被解决,即等待print函数被调用  
page.wait_for_function("window.waitForPrintDialog")

这段代码将等待在点击按钮后打印对话框被打开。请确保在点击按钮之前/页面加载之后执行注入的脚本。

http://www.dtcms.com/wzjs/449074.html

相关文章:

  • 个人网页制作成品免费seo的搜索排名影响因素有哪些
  • 广州网站建设公司哪个好新东方托福班价目表
  • 做网站要买什么空间百度竞价点击一次多少钱
  • 企业手机网站制作知识营销成功案例介绍
  • 免费空间大全长沙seo网站管理
  • 商城网站建设行情苏州网站排名推广
  • 网上做任务赚钱网站有哪些安徽网站优化
  • 家用宽带怎样做网站服务器怎么在百度上做公司网页
  • 电子商务网站建设大作业泰安百度推广公司
  • 网站改版设计思路广告代运营公司
  • 哪些网站设计的高大上百度做网站推广的费用
  • 龙潭湖网站建设世界十大网站排名出炉
  • 京东网站建设的特点seo搜索引擎是什么意思
  • 中山做网站哪家专业网站快速排名互点软件
  • html5移动网站制作教程市场调研与分析
  • 做门户论坛与网站的区别北京seo公司有哪些
  • 网站备案 四川竞价交易规则
  • 网站如何做线上和线下推广免备案域名
  • 做网站属软件什么专业精准客户截流软件
  • 网站开发技术课程设计总结企业管理培训课程视频
  • 网页翻译在哪seo线上培训机构
  • 这样做网站营销方式都有哪些
  • 网站模板商城百度推广seo效果怎么样
  • 龙岗龙城街道网站建设一键优化下载安装
  • wordpress修改站名企业网站设计与推广
  • 中国工程建设造价信息网站怎么让百度快速收录网站
  • 做社区网站用什么程序好网站建设方案推广
  • 两个公司的网站建设互联网营销方案
  • 门户网站建设使用语言百度指数查询工具app
  • 如何做网站家具导购如何检测网站是否安全