1

이제 내가 꾸지기 시작하기 전에 이것에 관한 기존의 질문 대부분을 읽었으며 다른 솔루션을 적용했다. (대부분 똑같은 것을 반복한다.) 그러나 여전히 나를 위해 작동하지 않는다. 필자는 필요한 모든 의존성을 가진 maven 프로젝트를 보유하고 있으며, 테스팅의 웹 사이트는 IE 용으로 특별히 제작되었으며, 액세스 할 수 있도록 특정 인증서를 가져야합니다. 나는 인증서를 가지고 있으며, 웹 사이트에 갈 때 페이지가로드되기 전에 인증서를 가지고 있는지 확인하고 팝업 창에서 확인해야합니다. 로그인 페이지가 완전히로드 된 다음에는 페이지가로드됩니다. The image shows the page before I accept the certificateSelenium 2 WebDriver UnhandledAlertException Java

The page loaded after I accept the certificate manually

NetBeans Persisting Error message

나는 전형적인 짓을 한 : 내가 잘못 가고 어디

WebDriverWait wait = new WebDriverWait(driver, 3); 
try { 
    // Handle alert box 
    driver.navigate().to("https://ke.m-pesa.com/ke/"); 
    wait.until(ExpectedConditions.alertIsPresent()); 
    Alert alert = driver.switchTo().alert(); 
    alert.accept(); 
} 
catch(Exception e) { 
    //whatever 
} 

당신이 말해 줄 수 있습니까? 지금까지는 Selenium RC 만 사용 했으므로이 webdriver 항목은 여전히 ​​나에게 새롭습니다. 추가 정보가 필요하면 알려주세요. 여전히 UnhandledAlertException을받는 이유는 무엇입니까 ?? 그리고 왜 내가 수동으로 OK 버튼을 누를 때까지 로그인 페이지에 접근 할 수 없습니까?

+0

단순히 생각하지 않는다 - 이것은 또한 로봇으로 해결 될 수있는 일입니다 - 브라우저 또는 기본 OS 팝업 파일을 다운로드/업로드, 예를 들어, 열이있을 때 비록, 경우가 있습니다 인증서 창은 경고 창입니다. –

+0

대신 무엇으로 분류 하시겠습니까? – val37

+3

"경고 창이 아닙니다."실제로 의미하는 것은 "WebDriver가이를 조작 할 수있는 창으로 인식 할 수 없습니다."입니다. 'Alert' 인터페이스는 JavaScript'alert()','confirm()'및'prompt()'함수에 의해 생성 된 대화 상자 ** **만을 처리하도록 설계되었습니다. – JimEvans

답변

3

로봇을 사용해 보셨습니까? 같은 뭔가 :

 Alert alert = driver.switchTo().alert(); 
    Robot a = new Robot(); 
    a.keyPress(KeyEvent.VK_ENTER); 

왜 로봇이 아닌 작업

From this answer :

이러한 도구 작업을 수행하는 방법의 측면에서 큰 차이가 있습니다. Selenium은 WebDriver API를 사용하고 브라우저에 명령을 보내어 ("JSON wire protocol"을 통해) 작업을 수행합니다.

Java AWT Robot은 네이티브 시스템 이벤트를 사용하여 마우스 및 키보드를 제어합니다.

브라우저 자동화를 수행하는 경우 일반적으로 에서 제공하는 기능이 충분하기 때문에 이상적으로 로봇과 같은 항목을 사용하지 마십시오.

+0

로봇이 정상적으로 작동했습니다. 고맙습니다! – val37

+0

니스, 그것에 익숙하지 않았다. Actions 클래스와 다른 점은 무엇입니까? – Stas

+0

@StasS가 다른 질문의 답변으로 업데이트되었습니다. –

관련 문제