Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Изменить текущий URL во время выполнения теста Webdriver

webdriver
java
Теги: #<Tag:0x00007f7b6d111030> #<Tag:0x00007f7b6d110e78>

(Алексей Смиян) #1

Добрый день. Пишу тест с использованием #webdriver .
Стоит такая задача. Во время теста, после перехода на следующую страницу, мне нужно получить текущий URL и после этого прибавить к нему определенное значение. И уже после этого чтоб тест выполнялся с новым URL(к которому добавлено значение).
В начале теста сделал такую настройку:

 @BeforeClass
    public static void setup(){
        driver = new FirefoxDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("https://e-test.aps-market.com/Tenders");
    }

Прописал такую переменную:

String currURL = WebDriverRunner.url();

Каждый тест идет отдельно. Используется аннотация @Test перед каждым тестом. И в начале необходимого мне теста(3-его по счету) я прописал:

driver.get(currURL + "?turbo=28800");

При запуске сначала запускается URL указанный в настройках BeforeClass. И почему-то сразу же скрипт начинает ловить текущий URL и прибавлять к нему значение. В результате чего конечно же получается ошибка.

Как сделать так, чтобы драйвер получал текущий URL именно в тот момент теста,когда мне нужно и уже после этого добавляя к нему значение использовал его. А до этого использовал URL из настроек BeforeClass.


(Алексей Смиян) #2

Немного разобрался с последовательностью запуска. Пока убрал аннотацию @Test перед каждым тестом, тесты стали методами. А в самом начале прописал такое:

    @Test
    public void creationTender() {
        ownerValidLogin();
        createDraftPurchase();
        addLot();
    }

Теперь последовательность стала такой как нужно. А вот сменить текущий URL все равно не получается.

org.openqa.selenium.WebDriverException: Component returned failure code: 0x804b000a (NS_ERROR_MALFORMED_URI) [nsIWebNavigation.loadURIWithOptions]

(Алексей Смиян) #3

Пока временно разобрался. Вроде работает, но если более опытные автоматизаторы посоветуют другое решение, то буду благодарен. Мое решение такое:

driver.get(driver.getCurrentUrl() + "?turbo=28800");

Сомнения в том, что приписка “турбо” сохранится до конца скрипта. Так как впереди будут еще переходы в другие окна.


#4

Первое. Зачем опираться на getCurrentUrl? А если позже поменяется логика инициализации? Лучше вынести URL в константу и использовать ее как в BeforeClass, так и в специфических тестах.

Второе. Зачем следить, чтоб приписка сохранялась до конца скрипта? Вы же далее по тесту, наверняка, просто переходите по ссылкам, нажимаете кнопки и т.д., а не вызываете driver.get() по нескольку раз. И тем, что сохранится в строке адреса, должен управлять сам тестируемый сайт.


(Алексей Смиян) #5

Текущий URL нужен для того, чтобы придать ускорение конкретному процессу, ссылка которого каждый раз меняется.