在 Selenium 3 中获取操作系统信息和 Firefox 浏览器版本

Posted

技术标签:

【中文标题】在 Selenium 3 中获取操作系统信息和 Firefox 浏览器版本【英文标题】:Getting OS info and Firefox browser version in Selenium 3 【发布时间】:2017-12-14 12:23:13 【问题描述】:

我正在升级到 Selenium 3,它破坏了我很久以前编写的从 WebDriver 实例检索操作系统和浏览器信息的函数。

这用于获取浏览器版本和操作系统名称:

Capabilities cap = ((RemoteWebDriver) driver).getCapabilities();
String browserVersion = cap.getVersion();
String osName = cap.getPlatform().name().toLowerCase();

它不再起作用了。我得到浏览器版本的空字符串和操作系统名称的“任何”。我正在使用第三方工具来管理驱动程序二进制文件:

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>1.7.0</version>
</dependency>

这就是我创建驱动程序实例的方式:

    FirefoxDriverManager.getInstance().setup();

    DesiredCapabilities caps = DesiredCapabilities.firefox();
    caps.setCapability("acceptInsecureCerts", true);

    WebDriver driver = new FirefoxDriver(caps);

    WebDriver.Timeouts timeouts = driver.manage().timeouts();
    timeouts.implicitlyWait(5L, TimeUnit.SECONDS);
    driver.manage().window().maximize();

    return driver;

这与我的 Selenium 2 代码没有太大区别。唯一的区别是使用了来自 3rd 方工具的驱动管理器,因为现在使用 Firefox 需要 geckodriver。

【问题讨论】:

看看github.com/Ardesco/selenium-standalone-server-plugin 【参考方案1】:

我想通了:

    Capabilities cap = ((RemoteWebDriver) driver).getCapabilities();

    String browserName = cap.getBrowserName();
    String browserVersion = (String)cap.getCapability("browserVersion");
    String osName = Platform.fromString((String)cap.getCapability("platformName")).name().toLowerCase();

    return browserName + browserVersion + "-" + osName;

可能是功能映射的平台名称和浏览器版本键更改并破坏了此功能。无论如何,我现在可以正确检索平台和浏览器版本。

【讨论】:

以上是关于在 Selenium 3 中获取操作系统信息和 Firefox 浏览器版本的主要内容,如果未能解决你的问题,请参考以下文章

Selenium自动化测试-7.获取元素属性信息

利用Selenium爬取淘宝商品信息

python 使用selenium和requests爬取页面数据

Python+selenium之获取验证信息

3-selenium-元素定位

使用Selenium含蓄等待获取页面元素(附带实际业务需求情景)