2011-10-11 2 views
0

프로덕션 사이트에 대한 "직원 추가"폼 기반 테스트를 자동화하고 있습니다. ID가 입력되거나 전자 메일 또는 이름이 이미 존재하는 경우 직원을 등록 할 수 없다는 서비스 오류가 표시됩니다. ...이 상자가 온다하더라도, 시험 내가 driver.switchTo()를 사용하여 시도 :(전달 내 코드에 경고() 함수를이 무슨 일이 있었는지입니다 :경고 없음/모달 대화 상자 없음 - WebDriver가 JS 오류를 catch 할 수 없음

파이어 폭스와
Alert alert=driver.switchTo().alert(); 
String text=alert.getText(); 
System.out.println(text); 

7 + 셀레늄 WebDriver 2.8 0.0 :

오류의
[1011/131949:ERROR:automation_json_requests.cc(59)] JSON request failed: GetAppModalDialogMessage 
    with error: No modal dialog is showing 

스냅 샷 : When the employee already exists

크롬 + 웹 드라이버와

org.openqa.selenium.NoAlertPresentException: No alert is present (WARNING: The server did not provide any stacktrace information); duration or timeout: 2.11 seconds 
    Build info: version: '2.8.0', revision: '14056', time: '2011-10-06 12:41:48' 
    System info: os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.37.6-0.7-desktop', java.version: '1.6.0_26' 
    Driver info: driver.version: RemoteWebDriver 

질문 :

대화 상자의 텍스트가 표시되지 않으면 문제가 없습니다. 이것이 유일한 경고입니다. 따라서 경고가 발생했음을 알면 내 문제가 해결됩니다. 그러나, 두 가지 더 경고/모달 대화 상자가 존재하지 않음을 :(말을

감사

편집 :.

Selenium selenium=new WebDriverBackedSelenium(driver,baseUrl); 
System.out.println(selenium.isAlertPresent()); 

이 거짓 밖으로 준은 경고 상자가 없습니다 :. 나는 또한이 시도 ? 모달 대화가 아닌가? 그 일이 아니라면, 페이지 상에 그 존재를 어떻게 발견 할 수 있습니까?

답변

2

브라우저가 경고를 렌더링하기 전에 셀렌 코드가 실행됩니다. 나는 이런 경향이있다 :

Alert getAlert() { 
    try { 
     Alert alert = driver.switchTo().alert(); 
     return alert; 
    } catch (NoAlertPresentException e) { 
     // no alert to dismiss, so return null 
     return null; 
    } 
} 

나는 이것이 이상적이라고 생각하지 않지만, 지금은 셀레늄에서 더 좋은 방법을 모른다. 나는 정기적으로이 테스트를 맹목적으로 호출하는 경향이 있습니다. 경고를 보내면 나는 그냥 무시할 것입니다. 앱에서 경고를 기다리고 있으며 진행하기 전에 알림을 닫으려면 while 루프로 감 쌉니다.

0

또한 모델 대화 상자에서도 같은 문제가 발생했습니다.

당신이해야 할 일은 ok buttion의 xpath를 찾아서 진행하는 것입니다.

나는 이것을 성공적으로 해냈다.

web 요소를 찾고 web 요소와 '확인'버튼을 클릭하십시오.

driver.switchto.alert.accept();과 같은 경고를 사용하지 마십시오.

관련 문제