Selenium Grid, как использовать WebDriver с ThreadSafeSeleniumSessionStorage.сессия()
Я работаю над проектом, который включает в себя использование Selenium WebDriver и специфического профиля Firefox для поиска элементов и управления страницей.
Например,
driver.findElement(By.xpath("//*[@id='foobar']"));
иdriver.manage().refresh();
Я пытаюсь внедрить Selenium Grid в свой проект; однако, с широким использованием Selenium WebDriver, есть ли способ запустить ThreadSafeSeleniumSessionStorage.session () статический объект с определенным WebDriver?
Насколько я знаю исследовано, можно получить WebDriver из объекта Selenium по:
startSeleniumSession(seleniumHost, seleniumPort, browser, webSite); //Create and start the session() object
//TODO: insert a specific WebDriver into the session() object
WebDriver driver = ((WebDriverBackedSelenium) session()).getWrappedDriver(); //Get the WebDriver from the session() object
2 ответов:
Я не пробовал этот код, но если он работает, то у вас будет объект, который содержит Selenium на основе WebDriver. В моем понимании эта функция существует для миграции с Селена 1 на селен 2. Это не рекомендуемый способ сделать веб-драйвер потокобезопасным.
WebDriver по умолчанию не является потокобезопасным. Я бы рекомендовал создать один экземпляр WebDriver для каждого потока.
Вы можете изучить реализацию класса ThreadSafeSeleniumSessionStorage и использовать ту же логику для создания нового класса ThreadSafeWebdriverSessionStorage. А ты не можешь? Источник здесь
Он использует класс ThreadLocal. Это не должно быть трудно осуществить.
Comments