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

StaleElementReferenceException при запуске в параллельном режиме

java
webdriver
Теги: #<Tag:0x00007f7b609e5858> #<Tag:0x00007f7b609e5718>

(Yerassyl Turlygazhy) #1

http://prntscr.com/ap4stx здесь тест параллелится


это xml http://prntscr.com/ap4syg

если запускать тесты оддельно, по одному все выполняется без проблем, а вот когда паралллельно http://prntscr.com/ap4t67

прошу подсказки, что не так, подозреваю что параллелю как то не правильно


(Pavel Ordenko) #2

Не думаю, что эта ошибка как-то связана со способом запуска тестов. Взможно, у вас на странице много AJAXа? Эта ошибка может появиться, когда найденный ранее элемент был изменен каким-либо образом. Попробуйте непосредственно перед обращением к элементу делать его повторный поиск. Например, в методе MainPage#search (строка 32), что-то типа такого:
driver.findElement(By.вашЛокатор).click()

Да, еще попробуйте driver в ThreadLocal обернуть.

private static ThreadLocal<WebDriver> driver = new ThreadLocal<>();
...
public static WebDriver getDriver() {
    return driver.get();
}

public static void setUp(String browserName) throws MalformedURLException {
    ...
    if () {
        driver.set(new RemoteWebDriver(...));
    ....
    getDriver().manage().timeouts()...;
    getDriver().manage().window()...;
}

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


(Farof Well) #3

Предположу что проблема все же в параллельности тестов: проверьте все ли у вас синхронно, нет ли какого то общего ресурса, как тесты получают драйвер и так далее, возможно где то они забирают друг у друга инфу или управление.
Ну и со стейлом можно побороться например вот так https://testerslittlehelper.wordpress.com/2016/03/26/непобедимый-дракон-как-забыть-о-staleelement-exception