.
搜索
相关推荐
热门标签

杭州app开发:Selenium自动确定Prompt和Alert弹框

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

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

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

实现这一行为则需要了解一个参数,unhandledPromptBehavior。
这一参数的用途是去处理那些以外的警报问题,当然了,这一定包括了alert与prompt。
它的取值有哪些呢?
我们怎么来使用这个参数,在我们的项目中发挥作用?
在这里,我会举出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