2013-02-08 10 views
0

셀렌 웹 드라이버를 사용하여 1000 개의 테스트를 수행하고 있습니다. 각 테스트 케이스에 대해 웹 페이지에서 "ID"요소를 클릭해야합니다.Selenium webdriver를 사용하여 요소를 찾을 수 없습니다.

나는 WebElement x = driver.findElement(By.xpath("//*[@id='TEST']").click(); 이벤트를 사용했습니다.

하지만 불행히도 몇 가지 테스트 시나리오 (1000 개 중 2 ~ 3 개)에서 "요소를 찾을 수 없습니다"라는 오류가 발생합니다. 나머지 테스트 케이스의 경우 평소와 같이 실행됩니다.

시도해 보았습니다 & 캐치 방법 & 페이지를 새로 고침했지만 기능은 정상적으로 작동하지만 성능이 너무 느립니다.

+0

같은 시나리오에서 오류가 발생합니까? – Manigandan

+0

Selenium이 브라우저를 실행할 것이기 때문에 성능이 느려질 것입니다.이 작업을 1000 번 수행하면 잘 보입니다. 이것에 대한 필요성은 무엇입니까? 페이지에서 일부 데이터를 긁어내는 것만으로도 Selenium은 작업에 가장 최악의 도구입니다. – Arran

답변

0

ExpectedConditions 클래스 (http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html)를 사용 해보셨습니까? 클릭하기 전에 elementToBeClickable에 대한 대기 시간을 추가하는 것으로 충분합니다.

+0

그래서 가장 적합한 솔루션은 무엇입니까? 나는 Wait 명령을 추가하려고했지만 운은 올리지 않았다. – user2000759

+0

나는 이것을위한 해결책이있다. 해결책은 다음과 같습니다. driver.manage(). timeouts(). pageLoadTimeout (20, TimeUnit.SECONDS); 모두에게 감사드립니다. – user2000759

0

"& 시도 방법 : & 새로 고침 방법"이란 무엇을 의미합니까? 셀레늄은 웹 브라우저 자체를 모방하므로 때때로 불안정합니다. 1000 번의 테스트에는 많은 시간이 걸리기 때문에 컴퓨터가 잠들지 않도록하고 테스트가 완료 될 때까지 테스트 프로세스를 방해하지 않도록하십시오. 브라우저를 최소화하면 일부 테스트가 실패합니다.

+0

새로 고침 및 대기 명령이 추가되었으며 예상대로 작동합니다. – user2000759

+0

어떤 페이지가 붙어 있는지 확인하고 거기에 대기 기능을 추가하십시오. 그것이 내가 전에 한 일입니다. 그것이 붙어있는 주된 이유는 페이지를 확인할 때 일부 페이지 내용이 준비되지 않았기 때문입니다. – yehe

+0

시도했지만 무작위로 여러 페이지에 달려 있습니다. 운이 없다. – user2000759

0

암시 적 대기 시간을 늘리는 것이 좋습니다. 예 :

driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); 
관련 문제