Selenium Grid,如何利用ThreadDafeSeleniumSessionStorage.session()来利用WebDriver

时间:2012-10-24 20:43:35

标签: java selenium webdriver selenium-webdriver selenium-grid

我正在开发一个项目,该项目涉及使用Selenium WebDriver和特定的Firefox Profile来查找元素和管理页面。

例如,
driver.findElement(By.xpath("//*[@id='foobar']"));

driver.manage().refresh();

我正在尝试将Selenium Grid实现到我的项目中;但是,随着Selenium WebDriver的广泛使用,有没有办法用特定的WebDriver启动ThreadSafeSeleniumSessionStorage.session()静态对象?

据我所研究,可以通过以下方式从Selenium对象获取WebDriver:

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 个答案:

答案 0 :(得分:2)

我没有尝试过这段代码,但是如果它有效,那么你将拥有一个拥有基于Selenium的WebDriver的对象。根据我的理解,此功能用于从Selenium 1迁移到Selenium 2.这不是推荐使Web驱动程序线程安全的方法。

默认情况下,WebDriver不是线程安全的。我建议为每个线程实例化一个WebDriver实例。

答案 1 :(得分:0)

您可以查看ThreadSafeSeleniumSessionStorage类的实现,并使用相同的逻辑来创建新的ThreadSafeWebdriverSessionStorage。不是吗?来源是here

它使用ThreadLocal类。应该不难实施。