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

Screenshot by Lightshot здесь тест параллелится


это xml Screenshot by Lightshot

если запускать тесты оддельно, по одному все выполняется без проблем, а вот когда паралллельно Screenshot by Lightshot

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

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

Предположу что проблема все же в параллельности тестов: проверьте все ли у вас синхронно, нет ли какого то общего ресурса, как тесты получают драйвер и так далее, возможно где то они забирают друг у друга инфу или управление.
Ну и со стейлом можно побороться например вот так Непобедимый дракон? Как забыть о StaleElement Exception — testers little helper