2014-10-17 3 views
1

Контекст: В настоящее время я работаю с системой на базе Selenium на Java, которая запускает тесты с использованием JUnit и Maven. Через плагин Maven Surefire я могу запускать тесты параллельно. Я обеспечили следующие вещи -TimeoutException при запуске параллельных тестов Selenium

  • ThreadLocal используется для одноэлементных объектов
  • Отдельные WebDriver на поток
  • Используя явные ожидания (например (new WebDriverWait(webdriver, timeout)).until(ExpectedConditions.________(_____));)

Проблема: Однако, когда запуск тестов параллельно, я получаю TimeoutExceptions в WebDriverWait явным ожиданиям. Это может произойти в любом месте теста, в котором используются явные ожидания. Эти исключения таймаута не возникают, когда тесты выполняются последовательно.

Вопрос: Я хотел бы узнать, столкнулись ли вы с такой ситуацией и как вы решаете эту проблему. Также приветствуется другая соответствующая информация и отзывы.

Заранее благодарен! Если вам нужны какие-либо дополнительные ресурсы, такие как пример кода, я рад предоставить.

ответ

1

Во-первых, я не уверен, как правильно использовать многопоточность с JUnit, в прошлый раз, когда я пробовал, я не имел успеха, во всяком случае, у меня были лучшие результаты с TestNG. Другое, что, вещи похожи на ваши, в основном от maven (верный огонь) Я звоню testng.xml, reference.

Теперь, webdriver, из коробки не поточно-безопасный. Темы могут быть запутаны, и может произойти всякое «почти невозможное для отладки». В любом случае, в последнее время люди WebDriver пытались решить эту проблему, и теперь у нас есть класс ThreadGuard (source). Это, по документации:

код клиента многопоточного должен использовать это, чтобы утверждать, что он обращается к WebDriver в поточно-образом.

Так что в вашем случае вы можете просто использовать его как (от верхней части головы, извините за опечатки):

ThreadLocal<WebDriver> driverStore = new ThreadLocal<>(); 
WebDriver driver = ThreadGuard.protect(new FirefoxDriver()); 
driverStore.set(driver); 

Я имел успех с помощью этой установки.

Смежные вопросы