gpt4 book ai didi

java - 在 Java 中使用 HtmlUnitDriver 处理警报

转载 作者:搜寻专家 更新时间:2023-10-31 08:04:33 25 4
gpt4 key购买 nike

我想在 java 中使用 HTMLUnitDriver 处理警报。我正在使用以下代码来处理使用 firefox 驱动程序的警报,它工作正常。

Alert alert = driver.switchTo().alert();
alert.accept();

但是 HTMLUnitDriver 给出了类似

的错误
java.lang.UnsupportedOperationException: alert() 

如何处理那里的警告框?

最佳答案

如果您不需要检查警报是否实际出现,我建议更改 JavaScript alert() 方法的行为以记录一条消息:

JavascriptExecutor javascriptExecutor = (JavascriptExecutor) webDriver;
javascriptExecutor.executeScript("window.alert = function(message){ console.log(message); };" +
"window.confirm = function(message){ console.log(message); return true; };");

然后你可以在你的代码中跳过 HtmlUnitDriver.switchTo().alert().accept()

注意:如果警告出现在初始页面加载时,此方法将不起作用,因为 Selenium 在与其交互之前等待页面加载。所以上面的 JavaScript 会执行得太晚。


HtmlUnitDriver 版本 2.25 开始,HtmlUnitDriver.switchTo().alert().accept() 不再抛出 UnsupportedOperationException()。然而,accept() appears to do nothing except confirm that the alert is present .由于无法解除警报,因此使用上述方法关闭警报可能是最好/唯一的解决方案。如果您必须使用 HtmlUnitDriver 测试警报,您可能需要两个单独的测试——一个用于检查警报是否出现,另一个用于检查浏览器在警报被禁用时是否正常运行。


如果您迫切需要警报处理并且可以从源代码构建,alert handling has been implemented in the master branch of HtmlUnitDriver .不过,我不确定它何时会包含在一个版本中。

关于java - 在 Java 中使用 HtmlUnitDriver 处理警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23675673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com