2010-05-25 6 views
2

나는 나의 웹 페이지에 일부 셀레늄 테스트 (루비)를 실행하고 그리고 난이 텍스트 상자에 잘못된 문자를 입력 할 때 나는 자바 스크립트 내가이 경고를 처리 할 수있는 방법을 너무셀렌 테스트를 실행할 때 javaScript 경고를 처리합니까?

if(isNaN($(this).val()) || Number($(this).val().valueOf() <=0)){ 
    alert("Please Enter A Number"); 
} 

같은 경고를 던져이 언제 만들었고 팝업을 닫았습니까?

나는 wait_for_pop_up()close()을 사용하려고했지만 브라우저 팝업과 자바 스크립트 경고가 아니라고 생각합니다.

어떤 아이디어가 있습니까?

감사

답변

2

documentation 많은 도움이되지만 셀레늄 RC에 대한 Java 문서 도구이 아닌는 getAlert()가 here을 존재하는 것을 보여주기 위해 보인다. 또한 this 사이트뿐만 아니라 이러한 기능들을 나열 셀레늄

처리는 다음 명령을 처리 에이전트 셀레늄 내에 가능한 :

  • getAlert()
  • assertAlert() assertAlertNotPresent()
  • assertAlertPresent() storeAlert()
  • storeAlertPresent()
  • verifyAlertNotP 재전송()
  • verifyAlertPresent() waitForAlert()
  • waitForAlertNotPresent()
  • waitForAlertPresent()

그 ... AlertPresent()와 ... AlertNotPresent() 함수는 경계의 존재를 확인하거나하지 - 내용에 관계없이 ... Alert() 함수는 호출자가 일치되어야하는 패턴을 지정할 수있게합니다. getAlert() 메소드는 Selenium RC에도 존재하며 표시된 이전 경고의 텍스트를 리턴합니다. 유사한 기능을 확인에도 사용할 수 있습니다.

+0

참고. 테스트 코드가 다른 스레드에서 [AutoIt] [1]을 실행하게함으로써이 문제를 해결할 수 있습니다. [1] : http://www.autoitscript.com/autoit3/index.shtml – Zugwalt

0

Selenium은 모든 JavaScript alert() 호출 (confirm() 및 prompt())을 가로 채고 처리합니다. 당신이 원하는 것을 말할 수 있고, 무슨 일이 일어 났는지 알 수 있습니다 (Zugwalt가 말한 것처럼 onLoad 동안 제외). isAlertPresent()를 호출하여 경고 생성 여부를 확인하고 getAlert()를 호출하여 텍스트를 검색 할 수 있습니다. Selenium은 심지어 둘 이상 (순서대로 검색 됨)이있는 경우에 대비하여 대기열로 보냅니다. 경고가 생성되고 getAlert()를 호출하여 검색하지 않으면 다음 Selenium 연산에서 예외가 발생합니다. 그리고 전화가 없을 때 전화하면 예외가 생깁니다.

예를 들어

(테스트되지 않은, 그리고 C#에서,하지만 당신은 요점을 파악해야한다) :

는 onLoad 이벤트 기간 동안 생성 된 경고를 처리 할 수 ​​없습니다 그냥 중단됩니다 알려진 셀레늄 문제가 있음을
selenium.GetEval("window.alert('Hi, mom!'); window.alert('Bye, dad!')"); 
Assert.AreEqual("Hi, mom!", selenium.GetAlert()); 
Assert.AreEqual("Bye, dad!", selenium.GetAlert()); 
Assert.IsFalse(selenium.isAlertPresent()); 
관련 문제