Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Инициализация двух драйверов Webdriver и RemoteWebDriver

remote
webdriver
selenium
Теги: #<Tag:0x00007fedb9b0bbd0> #<Tag:0x00007fedb9b0b9a0> #<Tag:0x00007fedb9b0b860>

(Andy) #1

Все привет!

Суть в следующем, имеется небольшой проект junit
Как и многие сейчас тесты гоняем в докере через хаб с помощью Женьки, а вот отладку произвожу на локальной машине.
То есть локально использую Webdriver
Для докера на Node использую RemoteWebDriver
Один раннер “TestRunner”

Суть проблемы в том что каждый раз приходится менять инициализацию драйверов.
Комментировать одно и разкомментировать другое.

В раннере я не могу произвести одновременно инициализацию обоих драйверов.

private static RemoteWebDriver driver = null;
private static WebDriver driver = null;

Если их вынести в отдельные классы то другая проблема, не могу нормально передать драйвер в другие классы где происходит обращение driver.блабла().траляля…

Хочу через Pomник потом передавать параметры чтобы сразу подтягивался remotedriver а локально по дефолту запускался webdriver.

Гайз хелп, как в таких случаях обычно делают?
Может примеры есть у кого подглядеть?


(Fiodar Motin) #2

Не знаю как с junit, но в testng я обычно делаю локальный конфит и создаю в pom для него профиль

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="test for local">
    <test name="test for local">
        <parameter name="browser" value="chrome"/>
        <parameter name="browserVersion" value="null"/>
        <parameter name="remote" value="null"/>
        <parameter name="headless" value="false"/>
        <parameter name="timeout" value="8000"/>
        <parameter name="baseUrl" value="http://localhost:8080/"/>
        <classes>
            <class name="selenium.loginAndRegistration.SignUpPageTest"/>
            <class name="selenium.main.MainPageTest"/>
            <class name="selenium.navbar.DocsPageTest"/>
            <class name="selenium.navbar.AboutPageTest"/>
            <class name="selenium.navbar.SupportPageTest"/>
            <class name="selenium.navbar.BlogPageTest"/>
            <class name="selenium.project.ProjectPageTest"/>
            <class name="selenium.dashboard.DashboardPageTest"/>
        </classes>
    </test>
</suite>

И профиль в pom

<profile>
			<id>local-test</id>
			<activation>
				<property>
					<name>SUITES</name>
				</property>
			</activation>
			<properties>
				<suites>testLocal</suites>
			</properties>
</profile>

Подход не супер, но запустить конкретный тест я могу путем написание двух строчек кода в local.xml (testng)
Думаю для junit можно сделать похожее решение.


(Andy) #3

Ты немного о другом, о том как запускать разные профили и параллельные тесты.
Или я тебя не понял.


(Fiodar Motin) #4

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="test for local">
    <test name="test for local">
        <parameter name="browser" value="chrome"/>
        <parameter name="browserVersion" value="null"/>
        <parameter name="remote" value="null"/>
        <parameter name="headless" value="false"/>
        <parameter name="timeout" value="8000"/>
        <parameter name="baseUrl" value="http://localhost:8080/"/>
        <classes>
          <class name="selenium.dashboard.DashboardPageTest">
                <methods>
                    <include name="testWhichNeedToRun"/>
                </methods>
                    </class>
        </classes>
    </test>
</suite>

И в таком случае по команде test -P local стартанет профиль из pom который будет использовать local конфиг в котором будет запускаться только один тестовый метод “testWhichNeedToRun”