Selenium Internet Explorer 11 - 连续警报 - 第二次警报时文本为空

Selenium InternetExplorer 11 - Succesive Alert - Text Empty on the second Alert

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

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

这是我的代码:

    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");

        }
    }


}

这样做的目的是获取第二个警报中包含的字符串文本。

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

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