Java 如何处理带有“警告”的警报;出人意料的行为”;硒的能力?
在selenium framework 2.25中,我看到我们使用了意外的AlertBehaviour枚举类型,但我不知道如何使用它。我找到了关于您的问题的这部分文档: 这也可能对其他人有用: v2.25.0 ======= 网络驱动程序:Java 如何处理带有“警告”的警报;出人意料的行为”;硒的能力?,java,selenium,Java,Selenium,在selenium framework 2.25中,我看到我们使用了意外的AlertBehaviour枚举类型,但我不知道如何使用它。我找到了关于您的问题的这部分文档: 这也可能对其他人有用: v2.25.0 ======= 网络驱动程序: 添加了用于处理基本和摘要身份验证的API 对话。目前没有在任何驱动程序中实现 警告用户IE驱动程序将不再使用中的DLL 下一版本 不推荐使用浏览器特定的WebElement子类 为远程webdrivers添加了对“requiredCapabilities”
- 添加了用于处理基本和摘要身份验证的API 对话。目前没有在任何驱动程序中实现
- 警告用户IE驱动程序将不再使用中的DLL 下一版本
- 不推荐使用浏览器特定的WebElement子类
- 为远程webdrivers添加了对“requiredCapabilities”的支持 并在firefox中实现了对这些功能的基本支持 司机。未能充分利用所需能力将导致 要抛出的SessionNotCreatedException
- 增加了确定如何处理未处理警报的功能 处理。这是由“出人意料的行为人”处理的 能力,可以是“接受”、“驳回”或 “忽略”。Java代码应该使用意想不到的AlertBehaviour 枚举。这目前只在Firefox中实现。
- 允许在Firefox和中配置本机事件 (实验)在IE中使用“nativeEvents”功能
- 将Firefox的受支持版本更新至17
它是一个CapabilityType,因此您必须用创建驱动程序时传递的所需功能来表达它。在Python中,我使用以下代码将此行为添加到FireFox驱动程序中:
selenium.webdriver.DesiredCapabilities.FIREFOX["unexpectedAlertBehaviour"] = "accept"
我还没有测试过这个Java,但理论上它应该可以工作:
DesiredCapabilities cap = new DesiredCapabailities();
cap.setPreference(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR,
org.openqa.selenium.UnexpectedAlertBehaviour.ACCEPT);
WebDriver driver = new FirefoxDriver(cap);
试着这样做:
DesiredCapabilities ff = DesiredCapabilities.firefox();
ff.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR UnexpectedAlertBehaviour.ACCEPT);
要管理可能出现的任何错误,只需使用
异常名称error
将其放入try/block,如下所示:
from selenium.common.exceptions import UnexpectedAlertBehaviour
from selenium.common.exceptions import UnexpectedAlertPresentException
try:
var = driver.some_function()
return True
except UnexpectedAlertBehaviour:
print "We have raised the UnexpectedAlertBehaviour"
return False
except UnexpectedAlertPresentException:
print "UnexpectedAlertPresentException"
return False
我知道这段代码不是用Java编写的,但基础是一样的。使用异常名称尝试/捕获。您可以在我关于alerts()处理的帖子中看到一个例子,如果您将Selenium与NodeJS一起使用,那么您可以使用选项.setAlertBehavior(UserPromptHandler.ACCEPT) 完整示例(Typescript):
从“selenium webdriver”导入{Builder};
从“selenium webdriver/chrome”导入{Options};
从“selenium webdriver/lib/capabilities”导入{UserPromptHandler};
(异步()=>{
让选项=新选项()
options.addArguments(`--user data dir=./profile`)
options.addArguments(`--no sandbox`)
options.windowSize({宽度:1280,高度:720})
options.setAlertBehavior(UserPromptHandler.ACCEPT)
让driver=wait new Builder().forBrowser('chrome').setChromeOptions(options).build();
})()
您不需要查找与所需功能或功能相关的任何内容,您可以使用
选项
变量填充该值。我不这么认为。事实上,UnexpectedAlertBehaviour不是alert.accept()引发的异常。这是一个枚举,不是要引发或捕获的异常。Nice@xyz,我看到了您的“words”徽标。你还有一个沙钟在上面:这是根本原因吗?对fxdriver.modals.clearFlag的绕过调用\u。。。查阅
DesiredCapabilities ff = DesiredCapabilities.firefox();
ff.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR UnexpectedAlertBehaviour.ACCEPT);
from selenium.common.exceptions import UnexpectedAlertBehaviour
from selenium.common.exceptions import UnexpectedAlertPresentException
try:
var = driver.some_function()
return True
except UnexpectedAlertBehaviour:
print "We have raised the UnexpectedAlertBehaviour"
return False
except UnexpectedAlertPresentException:
print "UnexpectedAlertPresentException"
return False