java - org.openqa.selenium.InvalidArgumentException : Invalid capabilities using DesiredCapabilities

标签 java selenium iedriverserver 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'。

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

如何解决这个问题?

代码片段:

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);

最佳答案

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

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);

关于java - org.openqa.selenium.InvalidArgumentException : Invalid capabilities using DesiredCapabilities,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47407248/

相关文章:

java - 如何在 mac osx 上加载 libgdx 桌面应用程序?

Selenium IDE 命令和assertTextPresent 不起作用

internet-explorer - Selenium Webdriver 和 IE 中的基本身份验证

bash - 自动启动 Selenium RC 服务器

java - 为什么 selenium Web 驱动程序在此网站上找不到文本字段?

java - org.openqa.selenium.remote.UnreachableBrowserException : Could not start a new session error with Selenium and IE11 using Java

java - Swagger - 呈现已声明异常的响应状态

java - Spring-data 和 Hibernate 自动生成的 ID

java - 用对象包裹集合属性