2012-10-24 14 views
5

Pracuję nad projektem, który wymaga użycia Selenium WebDriver i określonego profilu Firefoksa, aby znaleźć elementy i zarządzać stroną.
Selenium Grid, jak używać WebDriver z ThreadSafeSeleniumSessionStorage.session()

Na przykład
driver.findElement(By.xpath("//*[@id='foobar']"));
i
driver.manage().refresh();

Próbuję zaimplementować selen siatka do mojego projektu; jednak z szerokim wykorzystaniem Selenium WebDriver, czy istnieje sposób na uruchomienie obiektu statycznego ThreadSafeSeleniumSessionStorage.session() z określonym WebDriverem?

O ile mi zbadali, że jest możliwe, aby uzyskać WebDriver od obiektu Selen przez:

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 

Odpowiedz

2

nie próbowałem tego kodu, ale jeśli to działa wtedy masz obiekt, który posiada Oparty na selenach WebDriver. Według mojego zrozumienia ta funkcja służy do migracji z Selenium 1 do Selenium 2. Nie jest to zalecany sposób na zabezpieczenie wątku sterownika sieciowego.

Domyślnie WebDriver nie jest bezpieczny dla wątków. Poleciłbym utworzyć instancję jednej instancji WebDriver dla każdego wątku.

+0

Czy możesz dać trochę wgląd, jak to zrobić? –

+0

np. Jeśli chcesz zrównoważyć swoje klasy testowe, możesz uzyskać jeden WebDriver na klasę ... –

0

Możesz zajrzeć do implementacji klasy ThreadSafeSeleniumSessionStorage i użyć tej samej logiki, aby utworzyć nowy ThreadSafeWebdriverSessionStorage. Nie możesz? Źródło: here

Używa klasy ThreadLocal. Nie powinno być trudne do wdrożenia.