t.me/atinfo_chat Telegram группа по автоматизации тестирования

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

Теги: #<Tag:0x00007f748a14d290> #<Tag:0x00007f748a14d1c8> #<Tag:0x00007f748a14d100>

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

1 Симпатия

Что 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>
1 Симпатия

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

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

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

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

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

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

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

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

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

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

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

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

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

1 Симпатия

Подскажите пожалуйста что нужно поправить в 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>`

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

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

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

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

<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 подтягивает драйверы
как их задействовать?

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

Я так понял, что 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>
2 Симпатий

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

Для автоматического скачивания драйверов можно использовать 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

4 Симпатий