Как настроить selenium-webdriver для работы с chrome и opera?

chrome
opera
linux
Теги: #<Tag:0x00007fedc41451b8> #<Tag:0x00007fedc4145078> #<Tag:0x00007fedc4144f38>

(Kostuan) #1

Как настроить selenium-webdriver для работы с chrome и opera?

Может ли кто то помочь на реальном примере....

Было бы ещё лучше если под nux системами, настраиваю тестирование под Debian.


(AlexAlex) #2

Очень хочется ответить: "взять и настроить". Но, Ok:


(Mykhailo Poliarush) #3

а есть какая-то конкретная проблема, что не работает? переписывать части мануала как-то не хочется :)

 


(gam) #4

В системе интеграции (team city) создал два проекта с разными параметрами в строке запуска, для ие и для фаерфокс.  при запуске любого из этих проектов, переменная со значением браузера передается мавену и подставляется в профиль помника в качестве системной переменной.  В BaseClass фреймверка сделал метод getDriver, в котором находится ветвление. В зависимости от значения системной переменной - типа браузера,  переданной через мавен, инициализуруется необходимый драйвер. 

В результате все обращения к драйверу проходят в одном месте, через статический метод getDriver. Сам экземпляр драйвера, при этом, реализован снглтоном. И если он уже был инициализирован, отдается текущий инстанс.


(Sergey Korol) #5

Можно как-то так (работаю с гридом):

private DesiredCapabilities setDesireCapabilities() {
    DesiredCapabilities capability;

    switch (browser) {
        case FIREFOX:
            capability = DesiredCapabilities.firefox();
            break;
        case CHROME:
            capability = DesiredCapabilities.chrome();
            capability.setCapability("chrome.switches", Arrays.asList("--ignore-certificate-errors"));
            break;
        case IE:
            capability = DesiredCapabilities.internetExplorer();
            capability.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
            break;
        default:
            // ...
            break;
    }

    if (capability != null) {
        capability.setBrowserName(getBrowserName(browser));
        capability.setPlatform(platform);
    }

    return capability;
}

protected RemoteWebDriver initDriver() {
    DesiredCapabilities capabilities = setDesireCapabilities();
    try {
        return new RemoteWebDriver(new URL(Context.gridHub), capabilities);
    } catch (MalformedURLException e) {
        logger.error(e);
        return null;
    }
}

Единственная оговорка: все это дело чувствительно к платформе. Например, IE работает только под Windows.


(Shadow from Omsk) #6

Столкнулася с проблемой, где необходимо реализовать тесты для многих браузеров (Chrome, Mozilla, IE), для двух типов ОС (Windows 7 и Linux) одного и того же типа. Реализовал так:

1) Создаем в TeamCity двух агентов (Windows и Linux) соотвественно.

2) Разделяем тесты по имени файла (пишу на java), по тому имена такие:

*IntTestLinux.java

*IntTestWindows.Java

3) Настроил Maven  (через profiles) на разделение по типу ОС (Maven в состоянии определить из какой ОС запущен), для значений ОС unix запускаются тесты по шаблону имени *IntTestLinux.java для Windows соотвественно по шаблону *IntTestWindows.Java

4) Агенты осуществляют сборку проекта, его разворачивание и запуск тестов после каждого коммита для обоих ОС.

 

В итоге, получаем варианты тестов под каждую ОС, где выбирается тип теста под нужную ОС после сборки проекта. Если непонятно рассказал, могу привести кусок pom.xml.


(Ok) #7

Всем доброго дня!

если я правильно понял из http://code.google.com/p/selenium/wiki/OperaDriver, чтобы перейти от ФФокса к Опере, достаточно создать вебдрайвер: 

 

WebDriver driver = new OperaDriver();

так ли это? 

у меня написан тест, прекрасно работающий с ФФоксом. Попытался переделать под Оперу, создав новый вебдрайвер (переписал одну строчку), и разумеется тест работать перестал. 

Чувствую, что где то туплю, но не могу понять где, т.к. с Селениумом только начал работать.

надо подключать какие-то библиотеки или драйвер специально для Оперы? (слишком посто выглядит замена одной строки кода).

Подскажите пожалуйста, хотя бы в кратце, что конкретно надо сделать.


(Shadow from Omsk) #8

Начни с простого, драйвер подключился? Браузер открылся? Какую ошибку выдает? В какой ОС запускаешь тест? Какая версия Selenium и Opera?


(viktor.gogulenko) #9

Могу посоветовать добавить (подключить)  библиотеку вэбдрайвера оперы - https://github.com/operasoftware/operadriver/downloads Попробуйте добавить в проект ярники (operadriver-v0.14-source.jar и  operadriver-v0.14.jar) из архива. Если не получится, будем смотреть дальше...


(Ok) #10

браузер не открывается. сразу выдает ошибку "java.lang.NullPointerException". в коде ругается на  testUntitled:

 

@Test
public void testUntitled() throws Exception {
...
}

 

ОС - Винда 7, selenium-server-standalone-2.21.0, Opera 11.64

Подключение библиотек не помогло (все осталось так же), к тому же, если я правильно понял, в  Selenium биллиотеки для оперы уже есть.


(viktor.gogulenko) #11

У меня инициализация Opera Webdriver проходит абсолютно аналогично как Firefox Webdriver. Единственное, что добавил библиотеки Оперы и прописал импорт "import com.opera.core.systems.OperaDriver;" Остальное всё так же как и при ФФ. У меня Винда 7, Opera - 12,  selenium-java-2.19.0, selenium-java-2.19.0-srcs, selenium-server-standalone-2.19.0. Тесты на Опере гоняются без проблем.


(Ok) #12

Для Хрома в тесте указывается путь к драйверу. который запускается при старте теста.  и все работает (ну хотябы запускается браузер и открывается нужная страница). а если этот путь не прописывать, то результат точно такой же, как и с Оперой (начинает ругаться на public void testUntitled() throws Exception {,  только видимо по другой причине, т.к. ошибка другая).

После этого сразу появляется желание скачать такой же .exe для оперы, указать к нему путь и любоваться работой. Но похоже, что для оперы такого нет. В ФФоксе такая же броблема с такой же как у оперы ошибкой появляется, если удалить "driver = new FirefoxDriver();".  То есть проблема, видимо, с драйвером Оперы. вот только как ее решить