我正在尝试使用网络驱动程序中提供的功能并设置浏览器版本。我的chrome版本是32,但尝试在chrome 30中运行测试。
System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"/drivers/win/chromedriver.exe");
DesiredCapabilities caps = DesiredCapabilities.chrome();
caps.setCapability("version", "30");
WebDriver wd = new ChromeDriver(caps);
System.out.println(((RemoteWebDriver) wd).getCapabilities().getVersion());
当我打印浏览器版本时,其打印浏览器版本为32,但在功能上我将浏览器版本设置为30。我如何以正确的方式使用此功能。
不,你不能。由于您的测试是在装有Chrome 32的计算机上运行的,因此无法将其设置为Chrome 30,这仅仅是因为您没有Chrome 30。
DesiredCapabilities
即使驱动程序不支持您请求的功能也不会引发错误,也不一定能创建带有的WebDriver实例。这就是硒的设计方式。
有关更多信息DesiredCapabilities
,请参见此问题。我引用JimEvans的回答:
API指定将所需的功能传递到构造函数中。但是,可能是驱动程序不支持所需功能中要求的功能的情况。在那种情况下,驱动程序不会抛出任何错误,这是有意的。会话返回一个功能对象,该对象指示该会话实际支持的功能。
这就是这种情况下实际发生的情况。PhantomJS驱动程序不支持处理警报,返回的功能对象表明了同样的程度。在大多数语言绑定中,此返回的功能对象是只读的。在返回的对象可能是读写的语言绑定中,修改这些功能对会话没有实际影响。在未完成的W3C WebDriver规范中,有一个requiredCapabilities设置,如果服务器无法提供该功能,则会抛出异常,但据我所知,尚未由任何驱动程序实现。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句