Всем привет!
Знаю, что эта тема поднималась неоднократно, в том числе на этом форуме, но ответа на свой вопрос я так и не нашла.
В целях самообучения пытаюсь запустить свои тесты параллельно в нескольких браузерах.
Для этого локально подняла грид и зарегистрировала в нем ноды для основных браузеров.
Параметры запуска задаются в testng.xml, проект собирается на maven.
Изначально тесты писались без учета возможности параллельного запуска, поэтому пришлось немного модифицировать подход к работе с драйвером:
class BaseTest {
private static ThreadLocal<WebDriver> driver = new ThreadLocal<WebDriver>();
protected ThreadLocal<WebDriver> setWebDriver(String browser) throws MalformedURLException {
//тут инициализируется драйвер
}
@BeforeClass
@Parameters("browser")
protected void setUp(String browser) throws Exception {
driver = setWebDriver(browser);
driver.get().manage().window().maximize();
System.setProperty(ESCAPE_PROPERTY, "false");
}
}
Если запускать тесты для одного бразуера - все ок.
Но когда пытаюсь запустить для 2 и более, начинаются проблемы:
в одном из браузеров тесты начинают прогоняться, но падают со странными ошибками, которых нет при непараллельном запуске, во втором браузере - даже не запускаются.
Как я понимаю, проблема явно с использованием драйвера, потоки не могут “поделить” его между собой. Но разве использование контейнера ThreadLocal не должно решить эту проблему?