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
548   2  

2 ответов:

Я не пробовал этот код, но если он работает, то у вас будет объект, который содержит Selenium на основе WebDriver. В моем понимании эта функция существует для миграции с Селена 1 на селен 2. Это не рекомендуемый способ сделать веб-драйвер потокобезопасным.

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

Вы можете изучить реализацию класса ThreadSafeSeleniumSessionStorage и использовать ту же логику для создания нового класса ThreadSafeWebdriverSessionStorage. А ты не можешь? Источник здесь

Он использует класс ThreadLocal. Это не должно быть трудно осуществить.

Comments

    Ничего не найдено.