app制作_开发app的公司_怎么查询 - 老铁帮科技

时间:2020-02-28 12:48:47

什么是Prompt框?
prompt是 javascript语言中的一个方法,主要用处是显示提示对话框。
什么是Alert框?
alert()方法用于显示带有一条指定消息和一个 OK 按钮的警告框。 语法 alert(message) 参数描述 message 要在window 上弹出的对话框中显示的纯文本。

这篇文章的目的:
在做自动化的时候,在不知道什么情况下会突然弹出一个alert框,他们也可能是Prompt框。他们会严重阻断你程序的运行,为了解决这个问题,就需要Selenium的驱动能自动同意对话框。

实现这一行为则需要了解一个参数,unhandledPromptBehavior。
这一参数的用途是去处理那些以外的警报问题,当然了,这一定包括了alert与prompt。
它的取值有哪些呢?
  • accept=同意任何弹框,且不提示用户
  • accept and notify=同意弹框并且通知用户,这里需要注意,通知的方法是直接抛出异常,如果代码没有做捕捉处理,就会因此中断。
  • default=默认的
  • dismiss=解除掉意外警报
  • dismiss and notify=解除掉意外警报并且抛出一个异常,异常行为同上述。
  • ignore=如同字面上的意思,直接忽略掉这个警报,因此它必须得由用户来亲自处理。
我们怎么来使用这个参数,在我们的项目中发挥作用?
在这里,我会举出2个例子的使用方式
第一种:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities
import DesiredCapabilities
caps = DesiredCapabilities().CHROME
caps["unhandledPromptBehavior"] = "dismiss and notify"
driver = webdriver.Chrome(desired_capabilities=caps)
driver.get("http://google.com")

第二种:
chrome_options = Options()
chrome_options.set_capability('unhandledPromptBehavior', "accept")
driver = webdriver.Chrome(options=chrome_options)
driver.execute_script('alert(\"正在测试弹框是否被自动确定\");')
print(driver.title)
time.sleep(2000)
这里需要说明一下,如果你只弹框,而没有使用driver进行其他代码操作,那么这个弹框并不会被自动确定,一定要执行一句有用的代码,比如说driver.title 或者 driver.findElement

当然,如果你发现你的弹框依然没有按上文所说的"正确被处理",那可能是你关闭了w3c引擎,这个功能必须得基于它,如果你为了使用TouchActions.tap,你一定会关闭w3c。
关闭的方法是:
chrome_options.add_experimental_option('w3c', False)
所以你应该把这个值设置为True

业务咨询
客服QQ
联系电话
157-5718-4464
洪总监
梁川不二
浙江杭州
立即询价
置顶
自助估价申请
获取手机验证码
免费获取开发方案