【问题标题】:webdriver working with browser version使用浏览器版本的 webdriver
【发布时间】:2014-02-10 09:14:31
【问题描述】:

我正在尝试使用 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。 我怎样才能以正确的方式使用此功能。

【问题讨论】:

  • 我使用的是 chrome 版本 32.0.1700.107 m

标签: java google-chrome selenium selenium-webdriver


【解决方案1】:

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

DesiredCapabilities 的 WebDriver 实例不一定要创建,即使驱动程序在不支持您请求的功能时不会引发错误。这就是 Selenium 的设计方式。

有关DesiredCapabilities 的更多信息,请参阅this question。我引用 JimEvans 的回答:

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

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

【讨论】:

    猜你喜欢
    • 2012-09-15
    • 2016-11-16
    • 2018-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    相关资源
    最近更新 更多