【问题标题】:Selenium InternetExplorer 11 - Succesive Alert - Text Empty on the second AlertSelenium Internet Explorer 11 - 连续警报 - 第二个警报上的文本为空
【发布时间】:2019-01-12 00:39:08
【问题描述】:

你好(请原谅我的英语),

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

        }
    }


}

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 很高兴看到它正在工作。请接受作为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 2023-01-02
    相关资源
    最近更新 更多