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

webdriver
java
execution
Теги: #<Tag:0x00007f3d45768c78> #<Tag:0x00007f3d457689d0> #<Tag:0x00007f3d45768688>

(Ordyntcev Dmitry) #1

Автоматизаторы, подскажите пожалуйста, как правильно написать метод 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 методе сделать более проще (если это возможно) определение локального запуска или удаленного запуска? А то сейчас приходится делать так, если гоняю локально, то комментирую строку удаленного запуска, если удаленно, то комментирую строку локального запуска.. можно ли эту архитектуру как то улучшить? Если да, то приведите пример пжлста


(Misha Diptan) #2

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

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


#3

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


(Ordyntcev Dmitry) #5

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


#6

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

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


(Ordyntcev Dmitry) #8

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


#9

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


(Ordyntcev Dmitry) #10

спасибо


(Ordyntcev Dmitry) #11

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


(Vjacheslav Lukashevich) #12

Ещё интерсный вариант
1) обьявляются типы драйвера


2) потом тут они используются


#13

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

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


(Nikita) #14

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