java - test - 셀레니움 팝업창




Java로 Selenium WebDriver(selenium 2)에서 경고 처리 (4)

경고가 발생했는지 여부를 감지하고 싶습니다. 현재 다음 코드를 사용하고 있습니다 :

    try {
        Alert alert = webDriver.switchTo().alert();

        // check if alert exists
        // TODO find better way
        alert.getText();

        // alert handling
        log().info("Alert detected: {}" + alert.getText());
        alert.accept();
    } catch (Exception e) {
    }

문제는 웹 페이지의 현재 상태에 대한 경고가 없으면 제한 시간에 도달 할 때까지 특정 시간 동안 대기 한 다음 예외를 throw하여 성능이 실제로 나빠진다는 것입니다.

거기에 더 나은 방법, 어쩌면 내가 동적으로 발생하는 경고에 사용할 수있는 경보 이벤트 처리기가 있습니까?


다음 메소드를 작성하십시오.

public boolean isAlertPresent() {
    try {
        driver.switchTo().alert();
        return true;
    } // try
    catch (Exception e) {
        return false;
    } // catch
}

이제 아래와 같이 위의 방법을 사용하여 경고가 있는지 여부를 확인할 수 있습니다.

if (isAlertPresent()) {
    driver.switchTo().alert();
    driver.switchTo().alert().accept();
    driver.switchTo().defaultContent();
}

시도해 볼 수 있습니다.

 try{
        if(webDriver.switchTo().alert() != null){
           Alert alert = webDriver.switchTo().alert();
           alert.getText();
           //etc.
        }
    }catch(Exception e){}

그래도 작동하지 않으면 모든 창 핸들을 반복하여 경고가 있는지 확인할 수 있습니다. 셀레늄을 사용하여 새 창이 열리는 지 확실하지 않습니다.

for(String s: webDriver.getWindowHandles()){
 //see if alert exists here.
}

Alert alert = driver.switchTo().alert();

alert.accept();

알림 상자를 거부 할 수도 있습니다.

Alert alert = driver.switchTo().alert();

alert().dismiss();

try 
    {
        //Handle the alert pop-up using seithTO alert statement
        Alert alert = driver.switchTo().alert();

        //Print alert is present
        System.out.println("Alert is present");

        //get the message which is present on pop-up
        String message = alert.getText();

        //print the pop-up message
        System.out.println(message);

        alert.sendKeys("");
        //Click on OK button on pop-up
        alert.accept();
    } 
    catch (NoAlertPresentException e) 
    {
        //if alert is not present print message
        System.out.println("alert is not present");
    }




alert