Подтвердить что ты не робот

Получить версию браузера с помощью selenium webdriver

Как я могу использовать версию браузера?

>>> from selenium import webdriver
>>> driver = webdriver.Firefox()
>>> print version <-- how to do this?
    Firefox 12.0
4b9b3361

Ответ 1

Свойством capabilities является словарь, содержащий информацию о самом браузере, поэтому это должно работать:

print driver.capabilities['version']

Ответ 2

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

//make sure have correct import statements - I had to add these
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

WebDriver driver = new FirefoxDriver();

Capabilities caps = ((RemoteWebDriver) driver).getCapabilities();
String browserName = caps.getBrowserName();
String browserVersion = caps.getVersion();
System.out.println(browserName+" "+browserVersion);

Ответ 3

Хотя это может не совсем ответить на поставленный выше вопрос, это все равно может быть полезно для тех, кто ищет способ кодировать тест, основанный на разных поведении, которое они получают из разных браузеров (то есть Firefox против Chrome). Я искал это в то время, когда я наткнулся на эту тему, поэтому я подумал, что добавлю его, если он может помочь кому-то другому.

На Python, если вы просто ищете браузер, на котором вы тестируете (например, firefox, chrome, т.е. и т.д.), вы можете использовать...

driver.name

... в операторе if. Предполагается, что вы уже назначили драйвер для веб-браузера, на котором вы тестируете (например, Firefox, Chrome, IE и т.д.). Однако, если вам поручено тестировать несколько версий одного и того же браузера, вам нужно что-то большее в driver.version. Надеюсь, это поможет кому-то. Я искал это решение, когда нашел этот поток, поэтому решил, что добавлю его на случай, если кому-то это понадобится.

Ответ 4

Если ваша упаковка вашего WebDriver так, что это EventFiring, вам нужно будет выполнить пользовательскую реализацию EventFiringWebDriver.

import org.openqa.selenium.Capabilities;
import org.openqa.selenium.HasCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.events.EventFiringWebDriver;

public class MyEventFiringWebDriver extends EventFiringWebDriver implements HasCapabilities {

    private RemoteWebDriver driver;

    public MyEventFiringWebDriver(RemoteWebDriver driver) {
        super(driver);
        this.driver = driver;
    }

    @Override
    public Capabilities getCapabilities() {
        return driver.getCapabilities();
    }

}

Просто публиковать, потому что это была проблема, с которой я столкнулся.

Ответ 5

Просто отвечая на этот вопрос для пользователей Python, которые хотят распечатать все возможности, которые я искал, прежде чем я знал это. Ниже работает команда.

print driver.capabilities

Ответ 6

Если вы используете Chrome, вы можете сделать следующее:

driver.capabilities['version']

А если вы используете Firefox:

driver.capabilities['browserVersion']

Ответ 7

Если driver.capabilities['version'] не работает для вас, проверьте возможности. Номер версии есть, но он может находиться под другим ключом. Например, я получаю сообщение об ошибке в Windows 10 при попытке доступа к номеру версии с помощью клавиши version.

Чтобы проверить возможности:

print driver.capabilities

Для меня это работает в Chrome/Linux

driver.capabilities['version']

И это работает в Chrome/Windows 10

driver.capabilities['browserVersion']