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

Автоматизаторы, подскажите пожалуйста, как правильно написать метод 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: SWD.Starter/WebDriverRunner.cs at master · dzharii/SWD.Starter · GitHub

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

1 лайк

А как запускаются тесты? Я полагаю это maven, в таком случае можно поиграться с command line arguments. Как пищу для размышлений предлагаю посмотреть на ссылку ниже Passing command line arguments from Maven as properties in pom.xml - Stack Overflow

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

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

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

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

Кажись в этом проекте я игрался с проперти GitHub - olyv/openforbeta

1 лайк

спасибо

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

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

  1. обьявляются типы драйвера
    Selenium-Maven-Template/DriverType.java at master · Ardesco/Selenium-Maven-Template · GitHub
  2. потом тут они используются
    Selenium-Maven-Template/DriverFactory.java at master · Ardesco/Selenium-Maven-Template · GitHub
1 лайк

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

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

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

2 лайка