Получение информации об ОС и версии браузера Firefox в Selenium 3

Я обновляюсь до Selenium 3, который сломал функцию, которую я давно написал, которая получает информацию об ОС и браузере из WebDriver пример.

Используется для получения версии браузера и имени ОС:

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

Это больше не работает. Я получаю пустую строку для версии браузера и 'any' для имени ОС. Я использую сторонний инструмент для управления двоичными файлами драйверов:

<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. Единственным отличием является использование диспетчера драйверов от стороннего инструмента, поскольку для использования Firefox теперь требуется geckodriver.

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;

Может быть, это тот случай, когда имена ключей платформы и версии браузера для карты возможностей изменились и нарушили эту функциональность. В любом случае, теперь я могу правильно получить версию платформы и браузера.

Другие вопросы по тегам