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

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

Теги: #<Tag:0x00007f74891c3ef0> #<Tag:0x00007f74891c3e00>

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


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

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

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

Не думаю, что эта ошибка как-то связана со способом запуска тестов. Взможно, у вас на странице много 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()...;
}

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

1 Симпатия

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