Invalid capabilities in alwaysMatch: unhandledPromptBehavior is type boolean instead of string

爱⌒轻易说出口 提交于 2019-12-11 15:46:02

问题


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'

Automation code works with my older IE Driver (32 Bit) - 3.4.0.

Please suggest your view to resolve the error .

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

回答1:


In short:

  • Valid capability name is: "unhandledPromptBehavior"
  • Valid values for "unhandledPromptBehavior" AND for "unexpectedAlertBehavior" are: "accept", "dismiss", "accept and notify", "dismiss and notify", "ignore". But W3C supports only 1st and 2nd.

In details:

UNHANDLED_PROMPT_BEHAVIOUR is a constant name from CapabilityType interface. But you use it as string. So either capabilities.setCapability("unhandledPromptBehavior", ...) or capabilities.setCapability(CapabilityType.UNHANDLED_PROMPT_BEHAVIOUR, ...)

Values for those capabilities are encauntered in enum org.openqa.selenium.UnexpectedAlertBehaviour: it is because unhandledPromptBehavior is new updated name for unexpectedAlertBehaviour in webdriver3. Actually when you set unexpectedAlertBehaviour the webdriver (v3.8) automatically set both values.

So root cause of your error is the line: capabilities.setCapability(InternetExplorerDriver.UNEXPECTED_ALERT_BEHAVIOR, true):

You should replace true to valid value (see above). This line actually set both capabilities: unhandledPromptBehavior and unexpectedAlertBehaviour. Your first line (with "UNHANDLED_PROMPT_BEHAVIOR") just ignored by driver.




回答2:


The error InvalidArgumentException: Invalid capabilities in alwaysMatch: unhandledPromptBehavior is type boolean instead of string Details says does speaks about the main issue.

As you mentioned IE Driver so I guess the issue is with Internet Explorer and IEDriverServer.exe. To over come the issue use setCapability("UNHANDLED_PROMPT_BEHAVIOUR", "accept") as per the following code block :

System.setProperty("webdriver.ie.driver", "C:\\Utility\\BrowserDrivers\\IEDriverServer.exe");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("UNHANDLED_PROMPT_BEHAVIOUR", "accept");
InternetExplorerOptions opt = new InternetExplorerOptions();
opt.merge(capabilities);
WebDriver driver = new InternetExplorerDriver(opt);



回答3:


I was able to resolve the issue with below change "capabilities.setCapability(InternetExplorerDriver.UNEXPECTED_ALERT_BEHAVIOR, UnexpectedAlertBehaviour.IGNORE);"



来源:https://stackoverflow.com/questions/47410707/invalid-capabilities-in-alwaysmatch-unhandledpromptbehavior-is-type-boolean-ins

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!