Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Selenide, как наиболее эффективно конфигурировать тесты

maven
selenide
java
Теги: #<Tag:0x00007f7b63460790> #<Tag:0x00007f7b634605d8> #<Tag:0x00007f7b63460448>

(Александр Шиповалов) #1

Коллеги, добрый день. Возник такой вопрос. Сейчас есть небольшой проект на довольно таки типовой связке Java + Selenide + Maven. При запуске тестов через maven или CI, все довольно таки неплохо настраивается через System.Property (e.g. -Dbrowser), но естественно, что такой подход не работает при запуске из IDE. Есть ли какой то способ держать предустановленные System.Property или возможно считывать их из файла, опять же вопрос, как дать знать IDE что их необходимо считать? Может быть имеет смысл настроить установку этих свойств через профили maven, но тоже с ходу не могу сообразить как это лучше сделать


(Vasiliy Rakshin) #2

Что IDE используете? в разных IDE настройки передаются по разному.
Или да, в поме можно указать (ваши переменные и их значения):

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        ...........
        <configuration>
            ......
            <systemPropertyVariables>
                <tempDirectory>${project.build.directory}\temp\</tempDirectory>
                <browser>IE</browser>                       
            </systemPropertyVariables>
            ...........
        </configuration>
      ...........
    </plugin>

(Александр Шиповалов) #3

Использую IDEA, ага а по вашему варианту - то есть вынести настройку этих переменных в профиль Maven? В принципе неплохая уже идея


(Sergey Korol) #4

А что вы подразумеваете под

[quote=“alshipovalov, post:1, topic:8720”]
при запуске из IDE
[/quote]?

И чем это отличается от

[quote=“alshipovalov, post:1, topic:8720”]
При запуске тестов через maven
[/quote]?

П.С. Переменные окружения легко настраиваются в maven run / debug configuration самой IDE.


(Александр Шиповалов) #5

В том то и дело, хотелось бы написать мануал, благодаря которому любой юниор, любой менеджер смог бы запустить эти тесты - не важно из под какой IDE.


(Sergey Korol) #6

можно засетить где угодно: будь то IDE, cmd, CI и т.п. Тут не нужно каких-то специфических знаний.


#7

На самом деле, важно. В каждой IDE запуск делается по-разному (меню, кнопки, панели с результатами, поведение компонентов немного разное, где-то дополнительные плагины нужны). Поэтому любой юниор и любой менеджер не смогут за 2 минуты с этим разобраться, если не будет руководства.

Желательно взять пару распространенных IDE и сделать для них подробные гайды с порядком настройки с нуля, запуска, и обязательно со скриншотами.


(Павел Ветохин) #8

Можно создать базовый тестовый класс и при его инициализации или в @BeforeClass переопределить selenide-параметры, которые находятся в данном классе.


(Vasiliy Rakshin) #9

Коллеги, не усложняйте.
Самый универсальный и простой способ - это прописывание нужных переменных в поме.
Пример я выше привёл.


(asolntsev) #10

Чтобы запускать тесты из-под IDEA, достаточно один раз создать “run/debug configuration” и положить её в GIT. А именно, это файлы “.idea/runConfigurations”.
Тогда у любого, кто сделает “git clone” и откроет этот проект в IDEA, автоматически появятся кнопки для запуска тестов в нужных конфигурациях.


(Станислав Петкевич) #11

Подскажите пожалуйста что нужно поправить в pom что бы selenide запускался на chrome или IE, и все это также работало на jenkins?

`<build>
 <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19.1</version>
        <configuration>
            <!-- Skips unit tests if the value of skip.unit.tests property is true -->
            <skipTests></skipTests>
            <!-- Excludes integration tests when unit tests are run -->
            <excludes>
                <exclude></exclude>
            </excludes>
        </configuration>
    </plugin>
</plugins>
</build>
<dependencies>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>com.codeborne</groupId>
    <artifactId>selenide</artifactId>
    <version>3.0</version>
    <scope>test</scope>
</dependency>

</dependencies>`

(Vasiliy Rakshin) #12

В раздел configuration добавить раздел systemPropertyVariables, куда поместить параметр browser и нужное значение “chrome”, “firefox”, “ie”, “htmlunit”, “phantomjs”, “opera”


(Станислав Петкевич) #13

укажите пожалуйста разделы.


(Vasiliy Rakshin) #14

Извиняюсь, подправил.


(Станислав Петкевич) #15

наверное туплю

<configuration> <systemPropertyVariables> <browser>chrome</browser> </systemPropertyVariables> <!-- Skips unit tests if the value of skip.unit.tests property is true --> <skipTests></skipTests> <!-- Excludes integration tests when unit tests are run --> <excludes> <exclude></exclude> </excludes> </configuration>
требует путь прописанный в системном свойстве

вот таким способом запустил

<argLine> -Dbrowser=chrome -Dwebdriver.chrome.driver=C:\env\chromedriver.exe </argLine>
так получается что надо chromedriver.exe ложить в папку проекта
но selenide подтягивает драйверы
как их задействовать?


(Александр Шиповалов) #16

Не совсем понятен вопрос, ну пускай chromedrive r- лежит в папке проекте.


(Кирилл Емельянов) #17

Я так понял, что Selenide не подтягивает драйверы, их нужно скачивать вручную.
У меня файл pom.xml конфигурируется следующим образом:

<properties>
    <path.chrome>drivers\chromedriver.exe</path.chrome>
    <path.ie>drivers\IEDriverServer.exe</path.ie>
    <runner.browser>chrome</runner.browser>
</properties>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <systemPropertyVariables>
                    <webdriver.chrome.driver>${path.chrome}</webdriver.chrome.driver>
                    <webdriver.ie.driver>${path.ie}</webdriver.ie.driver>
                    <browser>${runner.browser}</browser>
                </systemPropertyVariables>
            </configuration>
        </plugin>
    </plugins>
</build>

(asolntsev) #18

Да, сейчас не подтягивает. Если кто запилит pull request - добро пожаловать, включим в следующий релиз.


(Антон Афтахов) #19

Для автоматического скачивания драйверов можно использовать webdrivermanager, встраивать такой функционал в Selenide наверное нет смысла.

        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>1.7.1</version>
        </dependency>
    @BeforeClass
    public static void setUp() {
        ChromeDriverManager.getInstance().setup();
    }

UPDATE: Данную фичу все же добавили в релизе selenide-4.7