【问题标题】:org.openqa.selenium.InvalidArgumentException: Invalid capabilities using DesiredCapabilitiesorg.openqa.selenium.InvalidArgumentException:使用 DesiredCapabilities 的功能无效
【发布时间】:2018-05-04 13:42:53
【问题描述】:

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

例外:

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

详情:

  • 硒:3.7.1;
  • IE:3.7.0(32 位驱动程序);
  • java.version: '1.8.0_144'。

另外,较新的版本建议 driver = new InternetExplorerDriver(capabilities); 已弃用。我在一个函数中单独设置浏览器的功能,并将其作为参数传递给驱动程序。

如何解决这个问题?

代码sn-p:

desiredCapabilities(browser);

IE Capabilities Setting:- 
capabilities = new DesiredCapabilities().internetExplorer();
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());

然后我调用我的驱动程序:

driver = new InternetExplorerDriver(capabilities);

【问题讨论】:

  • 你能告诉我们你的代码试验和你正在通过什么setting capabilities
  • 在设置浏览器之前我调用函数desiredCapabilities(browser);以下是用于设置浏览器的功能
  • 那么browserdesiredCapabilities的定义是什么?
  • 问题中添加了代码 sn-p。 Browser 和 Desired Capabilities 是我的框架中使用的函数

标签: java selenium iedriverserver desiredcapabilities mutablecapabilities


【解决方案1】:

好吧,来自 v3.7Selenium 实现不再接受 DesiredCapabilities 类型的对象作为参数来初始化 Web Browser 实例,而只是强键入Options 类是首选。所以你必须使用 InternetExplorerOptions 类对象,使用 MutableCapabilities 中的 merge 参数并作为参数传递。您的代码块如下:

System.setProperty("webdriver.ie.driver", "C:\\Utility\\BrowserDrivers\\IEDriverServer.exe");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS", true);
capabilities.setCapability("ACCEPT_SSL_CERTS", true);
capabilities.setCapability("SUPPORTS_ALERTS", true);
capabilities.setCapability("UNEXPECTED_ALERT_BEHAVIOR", true);
capabilities.setCapability("IE_ENSURE_CLEAN_SESSION", true);
capabilities.setCapability("ENABLE_ELEMENT_CACHE_CLEANUP", true);
capabilities.setCapability("nativeEvents", false);
capabilities.setCapability("requireWindowFocus", false);
capabilities.setJavascriptEnabled(true);
capabilities.setCapability("ignoreProtectedModeSettings", true);
InternetExplorerOptions opt = new InternetExplorerOptions();
opt.merge(capabilities);
WebDriver driver = new InternetExplorerDriver(opt);

【讨论】:

  • 谢谢。让我尝试实施并让您知道
  • 功能问题已解决。但我仍然面临错误 org.openqa.selenium.InvalidArgumentException:alwaysMatch 中的无效功能:unhandledPromptBehavior 是布尔类型而不是字符串
  • 你能提出一个新问题,确切的错误InvalidArgumentException: Invalid capabilities in alwaysMatch: unhandledPromptBehaviordesiredCapabilities(browser);
  • 是的,针对同一 stackoverflow.com/questions/47410707/… 提出了单独的问题
猜你喜欢
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 2015-06-30
  • 1970-01-01
  • 2017-07-24
  • 2016-12-11
  • 2023-04-11
  • 1970-01-01
相关资源
最近更新 更多