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

Метод setUp для запуска на нескольких браузерах

Теги: #<Tag:0x00007f7487754a10> #<Tag:0x00007f7487754948> #<Tag:0x00007f7487754808>

Автоматизаторы, подскажите пожалуйста, как правильно написать метод setUp, если тесты гоняю на нескольких браузерах…Сейчас выглядит это так

@BeforeMethod
@Parameters("browser")
public void setUp(String browserName) throws MalformedURLException {

    if(browserName.equalsIgnoreCase("firefox")) {
       ....
    driver = new RemoteWebDriver(new URL(url), desiredCapabilities);//Удаленный запуск
    driver = new FirefoxDriver(profile);}//Локальный запуск
    else if(browserName.equalsIgnoreCase("chrome")){
     ....
    driver = new RemoteWebDriver(new URL(url), desiredCapabilities);//Удаленный запуск
    driver = new ChromeDriver();//Локальный запуск
    ...
    ...}

конкретно вопрос такой, как можно в setUp методе сделать более проще (если это возможно) определение локального запуска или удаленного запуска? А то сейчас приходится делать так, если гоняю локально, то комментирую строку удаленного запуска, если удаленно, то комментирую строку локального запуска… можно ли эту архитектуру как то улучшить? Если да, то приведите пример пжлста

Можна винести створення драйвера в окремий клас, а потім створити його обєкт в методі SetUp. Для прикладу можете подивитись реалізацію в цьому framework: https://github.com/dzharii/SWD.Starter/blob/master/src/SWD.Core/WebDriver/WebDriverRunner.cs

Також, винести параметри: browserName, isRemote і т.д. в окремий файл(накприклад xml ) і зчитувати дані з нього.

1 Симпатия

А как запускаются тесты? Я полагаю это maven, в таком случае можно поиграться с command line arguments. Как пищу для размышлений предлагаю посмотреть на ссылку ниже https://stackoverflow.com/q/7513319/2504101

да, через мавен…но прибегать к такому варианту не очень хочется…Хотелось бы все красиво в методы запаковать

В случае profiles – возможно.

В случае properties придется “паковать” в методы.

А можешь показать наглядно (если твой вариант у тебя реализован)? А то мне любой вариант реализации щас интересен))

Кажись в этом проекте я игрался с проперти https://github.com/olyv/openforbeta

1 Симпатия

спасибо

А логины и пароли лучше хранить в отдельном файле? Или это не столь важно?

Ещё интерсный вариант

  1. обьявляются типы драйвера
    https://github.com/Ardesco/Selenium-Maven-Template/blob/master/src/test/java/com/lazerycode/selenium/config/DriverType.java
  2. потом тут они используются
    https://github.com/Ardesco/Selenium-Maven-Template/blob/master/src/test/java/com/lazerycode/selenium/config/DriverFactory.java
1 Симпатия

А это уже другой вопрос :smile:

А если серьезно, то почему бы и нет. Пусть тестовые данные лучше будут в одном месте, а не разбросаны по всему коду проекта

Используется selenide
Там это всё просто делается

2 Симпатий