Selenium InternetExplorer 11-成功警报-第二个警报文本为空

时间:2019-01-11 11:11:06

标签: java selenium selenium-webdriver internet-explorer-11

你好(对不起,我的英语),

在Selenium WebDriver和IE 11中使用时出现以下问题。 当我尝试捕获警报文本时,我设法在第一个警报中获取了第一个文本。 我接受第一个警报后,即会显示第二个警报,但尽管我可以接受,但文本为空。 我真的不明白这个问题。 你能帮我吗?

这是我的代码:

    public class AlertDemo {

    static WebDriver driver;
    static Wait<WebDriver> wait;

    static String driverPath = 
      "C:\\Users\\Acer\\Downloads\\IEDriverServer_Win32_2.53.1\\";

     public static void main(String[] args) throws 
 NoAlertPresentException, 
     InterruptedException {
        System.out.println("*******************");
        System.out.println("Lancement INTERNET EXPLORER pour 
  tester la popup");
        System.setProperty("webdriver.ie.driver", driverPath + 
  "IEDriverServer.exe");
        driver = new InternetExplorerDriver();

        driver.manage().window().maximize();

        // Alert Message handling

  driver.get("http://demo.guru99.com/test/delete_customer.php");

        driver.findElement(By.name("cusid")).sendKeys("53920");
        driver.findElement(By.name("submit")).submit();

        // Switching to Alert
        try {
            WebDriverWait wait = new WebDriverWait(driver, 
  2);

  wait.until(ExpectedConditions.alertIsPresent());
            Alert alert = driver.switchTo().alert();

            // Capturing alert message.    
            String alertMessage = 
     driver.switchTo().alert().getText();

            // Displaying alert message     
            System.out.println(alertMessage);

            // Accepting alert
            System.out.println("On accepte OK");
            alert.accept();

            Thread.sleep(500);
            //Pour le message en retour
            /*wait = new WebDriverWait(driver, 3);

          wait.until(ExpectedConditions.alertIsPresent());*/



            Alert alert2 = driver.switchTo().alert();
            System.out.println("TEXTE " + 
                     alert2.getText());
            System.out.println("TEXTE2 " + 
                             alert.getText());
            Thread.sleep(5000);
            if (alert2 == null) {

                System.err.println("Pas de popup !!");
            } else {
                System.out.println("OK la popup pour le 
  retour n'est pas nulle");
                Thread.sleep(2000);

                if 
                (!"".equals(driver.switchTo().alert().getText())) {

                    System.out.println(" Le texte 
     de la popup suivante est  " + driver.switchTo().alert().getText());
                    alert2.accept();
                } else {
                    System.err.println("Erreur: on 
  arrive pas à retrouver le texte");
                    System.out.println("Je vais 
   cliquer OK");
                    alert2.accept();
                }
            }

        } catch (NoAlertPresentException e) {
            e.printStackTrace();
            System.err.println("Pas trouvé d'alert");

        }
    }


}

这样做的目的是让第二个警报中包含String文本。

1 个答案:

答案 0 :(得分:0)

当您接受第一个警报时,第二个警报会带有以下复选框: “ 不允许此页面创建更多消息”。在Internet Explorer驱动程序中,它会以某种方式阻止其被读取。其他浏览器(例如Chrome)没有任何问题。

要解决此问题,您只需要将网站添加到Internet Explorer选项的trusted sites中。然后,您可以获取第二个警报的文本。