5

私は、Selenium WebDriverと特定のFirefoxプロファイルを多用して要素を見つけ、ページを管理するプロジェクトに取り組んでいます。

たとえば
driver.findElement(By.xpath("//*[@id='foobar']"));

driver.manage().refresh();

プロジェクトにSeleniumGridを実装しようとしています。ただし、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
4

2 に答える 2

2

私はこのコードを試していませんが、それが機能する場合は、SeleniumベースのWebDriverを保持するオブジェクトがあります。私の理解によると、この機能はSelenium1からSelenium2への移行に使用されます。これは、Webドライバーのスレッドを安全にするための推奨される方法ではありません。

デフォルトでは、WebDriverはスレッドセーフではありません。スレッドごとに1つのWebDriverインスタンスをインスタンス化することをお勧めします。

于 2012-10-24T22:03:38.643 に答える
0

ThreadSafeSeleniumSessionStorageクラスの実装を調べ、同じロジックを使用して新しいThreadSafeWebdriverSessionStorageを作成できます。できませんか?ソースはこちら

ThreadLocalクラスを使用します。実装するのは難しいことではありません。

于 2012-10-25T14:44:30.413 に答える