2012-10-24 2 views
5

저는 Selenium WebDriver와 특정 Firefox 프로필을 사용하여 요소를 찾고 페이지를 관리하는 것과 관련된 프로젝트를 진행하고 있습니다. 예를 들어Selenium Grid, ThreadSafeSeleniumSessionStorage.session()을 사용하여 WebDriver를 활용하는 방법


,
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 로의 마이그레이션을위한 것입니다. 이것은 웹 드라이버를 스레드로부터 안전하게 만드는 권장 방법은 아닙니다.

WebDriver는 기본적으로 스레드로부터 안전하지 않습니다. 각 스레드에 대해 하나의 WebDriver 인스턴스를 인스턴스화하는 것이 좋습니다.

+0

이 작업을 수행하는 방법에 대해 약간의 통찰력을 주시겠습니까? –

+0

예를 들어 테스트 클래스를 병렬 처리하려면 클래스 당 하나의 WebDriver를 가져올 수 있습니다. –

0

ThreadSafeSeleniumSessionStorage 클래스의 구현을 살펴보고 같은 논리를 사용하여 새로운 ThreadSafeWebdriverSessionStorage를 만들 수 있습니다. 안 그래? 출처 : here

ThreadLocal 클래스를 사용합니다. 구현하기 어렵지 않아야합니다.

관련 문제