如何在 Selenium Python 中设置 UnexpectedAlertBehaviour

n00*_*00b 3 python selenium exception selenium-chromedriver

这个问题涉及在 Java 中设置 Selenium webdriver 的 UnexpectedAlertBehaviour。你如何在 Python 的 ChromeDriver 中做同样的事情?

我尝试了以下方法;

    options = ChromeOptions()
    options.headless = True
    options.set_capability("UNEXPECTED_ALERT_BEHAVIOUR", "ACCEPT")
    options.set_capability("unexpectedAlertBehaviour", "accept")
    options.set_capability("CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR", "ACCEPT")
    options.set_capability("UnexpectedAlertBehaviour", "ACCEPT")
    webdriver.DesiredCapabilities.CHROME["unexpectedAlertBehaviour"] = "accept"
    cls.driver = webdriver.Chrome(chrome_options=options)
Run Code Online (Sandbox Code Playgroud)

但是,我仍然随机遇到这个unexpectedalertpresent异常:

selenium.common.exceptions.UnexpectedAlertPresentException:警报文本:消息:意外警报打开:{警报文本:}

当我以非无头模式(头模式?)运行浏览器时,我看不到这样的警报,但尽管我努力设置这个难以捉摸的选项,但测试仍然随机失败并出现此异常。

Rah*_*l L 5

随着 chromedriver 成为 W3C 兼容的 . 我们需要 在 ChromeDriver 76.0.3809.126 上使用unhandledPromptBehavior Checked(默认以 W3C 标准兼容模式运行)

chrome_options = Options()
chrome_options.set_capability('unhandledPromptBehavior', 'accept')
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://www.google.com")
driver.execute_script('alert(\"HI\");')
time.sleep(10)
print(driver.title)
time.sleep(10)
Run Code Online (Sandbox Code Playgroud)

参考 Chromedriver:问题 2597:支持新的 unhandledPromptBehavior 模式