2012-10-24 56 views
5

我正在致力於一個項目,涉及使用Selenium WebDriver和特定的Firefox配置文件大量查找元素和管理頁面。
硒網格,如何利用WebDriver與ThreadSafeSeleniumSessionStorage.session()

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

driver.manage().refresh();

我想實現硒電網到我的項目;但是,隨着Selenium WebDriver的廣泛使用,是否有辦法用特定的WebDriver啓動ThreadSafeSeleniumSessionStorage.session()靜態對象?

據我研究,有可能從硒對象獲得的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

我還沒有試過這種代碼,但如果它工作,那麼你將有一個保存了對象基於Selenium的WebDriver。根據我的理解,此功能適用於從Selenium 1遷移到Selenium 2.這不是推薦使Web驅動程序線程安全的方法。

默認情況下WebDriver不是線程安全的。我建議爲每個線程實例化一個WebDriver實例。

+0

您能否透露一下如何去做這件事? –

+0

例如,如果你想並行你的測試類,你可以得到一個WebDriver每個類... –

0

您可以查看ThreadSafeSeleniumSessionStorage類的實現並使用相同的邏輯來創建一個新的ThreadSafeWebdriverSessionStorage。你不能嗎?來源是here

它使用ThreadLocal類。應該不難實現。