работа try catch при потоковом тестировании

Теги: #<Tag:0x00007f738bc5a2c8> #<Tag:0x00007f738bc5a1b0> #<Tag:0x00007f738bc5a0c0> #<Tag:0x00007f738bc59f80>

Всем доброго времени суток. Возник вопрос, а как работает обработка исключений , если запущено несколько тестовых методов в разных потоках?

У меня на сайте создаётся в разных потоках браузера пул оплат однотипных договоров методом pay();
Система устроена так, что документы оплат заносятся в api сайта, но, если договоров много (как собственно в моём случае), то может возникнуть ошибка api на весь экран браузера (элемент с ошибкой описан в блоке while), поэтому я создал цикл, в котором пытаюсь оплатить договор методом setPayPolicyCash(), и , если я ловлю эту ошибку, то нажимаю “назад” и снова пытаюсь оплатить, пока окно с ошибкой не исчезнет.

В 2х из 10ти потоках эта ошибка возникает регулярно, но блок try catch не отрабатывает на этих 2х потоках, , отсюда вопрос, почему так происходит? Есть ли у меня ошибка в try catch или же исключения в потоках работают как-то не так?

Код

public void pay() throws InterruptedException {

    do {
        try {
            setPayPolicyCash();
        } catch (NoSuchElementException e) {
            driver.navigate().back();
        }
    }  while (driver.findElement(By.cssSelector("body > div > form > div.top-bar")).isDisplayed());
}

Вы сами ответили на свой вопрос. Отладте код сначала в одном потоке, а потом запускайте в 10 потоках.

И ещё люди писали, старались, а вы отсебятину пишите. А если в цикле while условие так и не выполнится, программа у вас зациклится. Почитайте про явные и неявные ожидания http://qa-blog.alexei-vinogradov.de/2015/07/правда-о-явных-и-неявных-ожиданиях-в-selenium/