2012-10-24 6 views
5

Ich arbeite an einem Projekt, das die Verwendung des Selenium WebDriver und eines speziellen Firefox-Profils beinhaltet, um Elemente zu finden und die Seite zu verwalten.
Selenium Grid, wie man WebDriver mit ThreadSafeSeleniumSessionStorage.session() verwendet

Zum Beispiel
driver.findElement(By.xpath("//*[@id='foobar']"));
und
driver.manage().refresh();

Ich versuche, Selenium Grid in mein Projekt umzusetzen; Jedoch gibt es bei der umfangreichen Verwendung von Selenium WebDriver eine Möglichkeit, das statische ThreadSafeSeleniumSessionStorage.session() -Objekt mit einem bestimmten WebDriver zu starten?

Soweit ich recherchiert, ist es möglich, den WebDriver vom Selen-Objekt erhalten von:

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 

Antwort

2

ich diesen Code nicht versucht haben, aber wenn es dann funktioniert würden Sie ein Objekt haben, das hält Selen-basierter WebDriver. Nach meinem Verständnis ist diese Funktion für die Migration von Selenium 1 zu Selenium 2 vorhanden. Dies ist nicht die empfohlene Methode, um den Thread für den Web-Treiber sicher zu machen.

WebDriver ist standardmäßig nicht Thread-sicher. Ich würde empfehlen, eine WebDriver-Instanz für jeden Thread zu instanziieren.

+0

Könnten Sie einen kleinen Einblick geben, wie Sie das machen können? –

+0

zB wenn Sie Ihre Testklassen parallelisieren möchten, können Sie einen WebDriver pro Klasse bekommen ... –

0

Sie können sich die Implementierung der ThreadSafeSeleniumSessionStorage-Klasse ansehen und dieselbe Logik zum Erstellen eines neuen ThreadSafeWebdriverSessionStorage verwenden. Kannst du nicht? Die Quelle ist here

Sie verwendet die ThreadLocal-Klasse. Sollte nicht schwierig zu implementieren sein.