Selenium grid или TestNG XML для параллельного кросс-браузерного тестирования - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь провести кросс-браузерное тестирование на селене, подключившись к стеку браузеров, чтобы я мог одновременно тестировать несколько браузеров.

В настоящее время я использую файл testng xml для настройки браузеров на тестирование (см. Код ниже) и запускаю свои тесты оттуда параллельно.

Возможно, я буду делать это как минимум для 15 различных типов браузеров / устройств, и мне было интересно, будет ли хорошей идеей продолжать использовать этот подход. Или селеновая сетка будет лучше? Любые предложения будут оценены:)

testng xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="2" name="test.java" verbose="1" annotations="JDK" parallel="tests" >
    <test name="Test - Chrome">
        <parameter name="browser" value="chrome"/>
        <parameter name="browserVersion" value="74.0 beta"/>
        <parameter name="os" value="OS X"/>
        <parameter name="osVersion" value="Mojave"/>
        <parameter name="resolution" value="1024x768"/>
        <classes>
            <class name="EndToEnd"/>
        </classes>
    </test>

    <test name="Test - Firefox">
        <parameter name="browser" value="firefox"/>
        <parameter name="browserVersion" value="66"/>
        <parameter name="os" value="OS X"/>
        <parameter name="osVersion" value="Mojave"/>
        <parameter name="resolution" value="1024x768"/>
        <classes>
            <class name="EndToEnd"/>
        </classes>
    </test>
</suite>

настроить класс:

@BeforeTest
    @Parameters({"browser", "browserVersion", "os", "osVersion", "resolution"})
    public void setUp(String browser, String browserVersion, String os, String osVersion, String resolution) throws Exception
    {
        DesiredCapabilities capability= new DesiredCapabilities();
        capability.setCapability("browser", browser);
        capability.setCapability("browser_version", browserVersion);
        capability.setCapability("os", os);
        capability.setCapability("os_version", osVersion);
        capability.setCapability("resolution", resolution);
        capability.setCapability("browserstack.local", "true");
        capability.setCapability("browserstack.localIdentifier", "Test123");
        driver = new RemoteWebDriver(new URL(URL), capability);
    }

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Здесь есть две части вопроса.

Селеновая сетка появляется только тогда, когда вы пытаетесь настроить инфраструктуру, необходимую для вашего браузера / мобильной автоматизации.Когда я говорю об инфраструктуре, я имею в виду следующее:

  1. Оформление и версия браузера / Оформление и версия мобильного устройства
  2. Версия ОС

Помимо настройкиинфраструктура, необходимая для автоматизации, сетка также позволяет вам выполнять удаленное выполнение (так что ваш локальный компьютер может быть освобожден от выполнения действий автоматизации тестирования в браузере)

Если вам нужно будет запускать тесты в разных комбинациях браузер + ОС, тогда TestNG suite xml, возможно, является правильным и рекомендуемым способом сделать это.

Когда вы выражаете комбинации вашего браузера / версии / платформы в качестве значений через xml-файл testng, а затем используете его для построения DesiredCapabilities то, что вы по сути дела здесь делаете, это построение английской формулировки «Я хотел бы запустить этот тест в браузере Firefox версии 66, работающей на компьютере с OSX».

С другой стороны, сетка предназначена для ответа натакие вопросы, как

  1. Я могу запустить тест, предназначенный для запуска на FБраузер irefox версии 66, работающий на компьютере OSX.
  2. В настоящее время у меня нет связанной машины, которая могла бы поддерживать Internet Explorer в Windows 10 (потому что у меня нет таких машин со мной)

Ответственность за распространение теста лежит на Grid.Определение требований к кроссбраузерной автоматизации с помощью теста было бы ответственностью тестового случая.Здесь TestNG позволяет вам указать это требование в вашем тестовом примере, предоставляя различные различные способы параметризации намерения (один из таких способов - файл Suite xml)

0 голосов
/ 08 апреля 2019

Если честно, я бы настроил концентратор с различными возможностями узлов и просто позволил бы сетке распределять это по узлам вместо того, чтобы иметь его в тестовом NG.

Здесь есть хорошая статья, которая поможет вам лучше понять.

https://dzone.com/articles/selenium-grid-tutorial-setup-and-example-of-cross

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...