2012-06-08 2 views
1

Firefox 11 + WebDriver 2.21.0/WebDriver 2.22.0 (모두 시도)을 사용하고 있습니다.webdriver 2.21 및 mozilla11의 경고 처리

필자의 시나리오에서 탭을 클릭하면 확인 상자가 열리고 OK을 클릭하면 서버에서 새 탭로드가 시작됩니다.

그래서 나는이 시나리오를 처리 해요 :

driver.findElement(By.id("myTab")).click(); 
driver.switchTo().alert().accept(); 

하지만 "mytab"를 클릭 한 후 창이 무기한로드 될 때까지 기다린다. 그래서 그것은 alert.accept()에 오지 않아서 브라우저는 새로운 페이지를로드하기 위해 확인 대화 상자를 기다리므로 교착 상태가됩니다.

이 코드는 Internet Explorer에서 잘 작동합니다.

상황을 어떻게 처리 하시겠습니까?

답변

0

Selenium WebDriver에서 사용자가 버그 (또는 적어도 불일치)를 발견했을 수 있습니다.

Look here 이전에 발견했는지 여부를 확인하십시오. 그런 버그가없는 경우 무료 to file it을 알려주세요.

그 사이에 loading FirefoxDriver with "unstable" loading strategy을 시도한 다음 (충분하지 않은 경우) driver.manage().timeouts().pageLoadTimeout() ("불안정한"설정이있는 Firefox에서만 작동)을 시도 할 수 있습니다. 해결 방법으로

, 당신은 자바 스크립트를 통해 탭을 클릭 시도 할 수 있습니다 - 나는 그것이 나 작동하지 않습니다할지 모르겠어요하지만 :

((JavascriptExecutor)driver).executeScript("document.getElementById('myTab').click()"); 


편집 :

다른 해결 방법 (Selenium RC에서 영감을 얻음)으로 수행 할 수있는 작업은 일시적으로 확인 대화 상자 ...

// assuming your driver can handle JS ;) 
JavascriptExecutor js = (JavascriptExecutor)driver; 

// stores the original confirm() function and replaces it 
js.executeScript("window.originalConfirm = window.confirm;" 
     + "window.confirm = function(m) { return true; };"); 

driver.findElement(By.id("myTab")).click(); 
// it should not even fire the confirm and just proceed 

// get the confirm back 
js.executeScript("window.confirm = window.originalConfirm;"); 
+0

답장을 보내 주셔서 감사합니다. 나는 ((JavascriptExecutor) 드라이버 사용) .executeScript ("arguments [0] .click()", 요소); 그러나 그것은 또한 같은 방법으로 기다린다. – Akarsh

+0

그리고 driver.manage(). timeouts(). pageLoadTimeout()을 사용해 보았습니다. systen은 페이지가로드 된 후에도 페이지로드 완료를 감지 할 수 없으며 지정된 시간 후에 대기 및 시간 초과를 계속 유지합니다. – Akarsh

+0

그 점은 유감입니다. 그렇다면 그것은 버그라고 생각합니다. –

관련 문제