java - alwaysMatch 中的无效功能 : unhandledPromptBehavior is type boolean instead of string

标签 java selenium selenium-iedriver desiredcapabilities mutablecapabilities

我已将 Selenium 框架升级到最新版本。在执行代码期间,我收到以下异常

异常:

org.openqa.selenium.InvalidArgumentException: 
Invalid capabilities in alwaysMatch: unhandledPromptBehavior is type boolean instead of string

详细信息:

Selenium :3.7.1 IE:3.7.0(32 位驱动程序) java.version: '1.8.0_144'

自动化代码适用于我的旧版 IE 驱动程序(32 位)- 3.4.0。

请提出您的观点来解决该错误。

capabilities.setCapability("UNHANDLED_PROMPT_BEHAVIOUR" ,false);
                    capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
                    capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
                    capabilities.setCapability(CapabilityType.SUPPORTS_ALERTS, true);
                    capabilities.setCapability(InternetExplorerDriver.UNEXPECTED_ALERT_BEHAVIOR, true);
                    capabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
                    capabilities.setCapability(InternetExplorerDriver.ENABLE_ELEMENT_CACHE_CLEANUP, true);
                    capabilities.setCapability("nativeEvents", false);
                    capabilities.setCapability("requireWindowFocus", false);
                    capabilities.setJavascriptEnabled(true);
                    capabilities.setCapability("ignoreProtectedModeSettings", true);
                    System.setProperty("webdriver.ie.driver", ieExe.getAbsolutePath());
                    opt = new InternetExplorerOptions();
                    opt.merge(capabilities);
                    driver = new InternetExplorerDriver(opt);
                    driver.manage().deleteAllCookies();
driver.manage().window().maximize();

最佳答案

简而言之:

  • 有效的功能名称为:“unhandledPromptBehavior”
  • “unhandledPromptBehavior”“unexpectedAlertBehavior” 的有效值为:“accept”“dismiss”“接受并通知”“驳回并通知”“忽略”。但W3C支持only 1st and 2nd

详细信息:

UNHANDLED_PROMPT_BEHAVIOUR 是来自 CapabilityType 接口(interface)的常量名称。但你将它用作字符串。因此,要么 capability.setCapability("unhandledPromptBehavior", ...)capability.setCapability(CapabilityType.UNHANDLED_PROMPT_BEHAVIOUR, ...)

这些功能的值包含在枚举org.openqa.selenium.UnexpectedAlertBehaviour中:这是因为unhandledPromptBehaviorunexpectedAlertBehaviour的新更新名称在 webdriver3 中。实际上,当您设置unexpectedAlertBehaviour时,网络驱动程序(v3.8)会自动set both values .

所以错误的根本原因是这一行: capability.setCapability(InternetExplorerDriver.UNEXPECTED_ALERT_BEHAVIOR, true):

您应该将 true 替换为有效值(见上文)。该行实际上设置了两个功能:unhandledPromptBehaviorunexpectedAlertBehaviour。您的第一行(带有“UNHANDLED_PROMPT_BEHAVIOR”)刚刚被驱动程序忽略。

关于java - alwaysMatch 中的无效功能 : unhandledPromptBehavior is type boolean instead of string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47410707/

相关文章:

c# - 使用 Selenium 2 的 IWebDriver 与页面上的元素进行交互

selenium - 使用 SendKeys 向 IE 11 发送 '@' 特殊字符

java - 优化图像 - 在 Java 中无损压缩图像

java - 同步块(synchronized block)不锁定对象

java - 一个程序执行中的多个时间戳

javascript - 作为 Web 应用程序实时更新 TreeView

java - Spring @Value 读取的继承属性为 null

java - Selenium 无法识别 IE 中新打开的浏览器上的元素

java - Selenium Webdriver 在表单中输入多行文本而不提交

java - java/selenium webdriver 操作类引发 InvokingTargetException