webdriver使用浏览器版本

时间:2014-02-10 09:14:31

标签: java google-chrome selenium selenium-webdriver

我正在尝试使用webdriver中提供的功能并设置浏览器版本。我的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。 我怎样才能以正确的方式使用这种功能。

1 个答案:

答案 0 :(得分:2)

不,你不能。由于您的测试在使用Chrome 32的计算机上运行,​​因此您无法将其设置为Chrome 30,因为您没有Chrome 30。

如果驱动程序不支持您请求的功能,则即使驱动程序没有抛出错误,也无法创建带有DesiredCapabilities的WebDriver实例。这就是Selenium的设计方式。

有关DesiredCapabilities的详情,请参阅this question。我引用JimEvans的回答:

  

API指定将所需的功能传递给   构造函数。但是,可能是驾驶员没有的情况   支持所需功能中请求的功能。在这种情况下,   驱动程序不会抛出任何错误,这是故意的。一个   功能对象由会话返回,表示   会话实际支持的功能。

     

这就是在这种情况下实际发生的事情。 PhantomJS驱动程序   不支持处理警报,返回的功能对象   表示同样多。在大多数语言绑定中,这都返回了   能力对象是只读的;在语言绑定中   返回的对象可能是读写的,修改这些功能却没有   对会话的实际影响。在待定的W3C WebDriver中   规范,有一个requiredCapabilities设置   如果服务器无法提供该功能,则抛出异常,但是   据我所知,尚未由任何驱动程序实现。