3

I have upgraded my Selenium framework to the latest version. During execution of the code, I receive the following exception:

Exception:

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

Details:

  • Selenium: 3.7.1;
  • IE: 3.7.0 (32 Bit Driver);
  • java.version: '1.8.0_144'.

Also newer version suggests driver = new InternetExplorerDriver(capabilities); is deprecated. I am setting capabilities of the browser separately in a function and passing it as a parameter in Driver.

How to resolve this issue?

Code snippet:

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

Then I invoke my driver:

driver = new InternetExplorerDriver(capabilities);
Ratmir Asanov
  • 5,433
  • 5
  • 20
  • 36
Priya
  • 69
  • 3
  • 14

1 Answers1

2

Well, the Selenium implementation from v3.7 on wards no more accepts DesiredCapabilities type objects as a parameter to initialize Web Browser instances rather only strongly typed Options classes are preferred. So you have to use InternetExplorerOptions Class object, use merge argument from MutableCapabilities and pass as a parameter. Your code block will be as follows :

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);
DebanjanB
  • 118,661
  • 30
  • 168
  • 217
  • Thanks. Let me try to implement and let you know – Priya Nov 21 '17 at 08:37
  • Capabilities issue is resolved. But I am still facing the error org.openqa.selenium.InvalidArgumentException: Invalid capabilities in alwaysMatch: unhandledPromptBehavior is type boolean instead of string – Priya Nov 21 '17 at 10:12
  • Can you raise a new question with the exact error `InvalidArgumentException: Invalid capabilities in alwaysMatch: unhandledPromptBehavior` and `desiredCapabilities(browser);` – DebanjanB Nov 21 '17 at 10:14
  • Yes raised separate question for the same https://stackoverflow.com/questions/47410707/invalid-capabilities-in-alwaysmatch-unhandledpromptbehavior-is-type-boolean-ins – Priya Nov 21 '17 at 10:26