你好(对不起,我的英语),
在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文本。
答案 0 :(得分:0)
当您接受第一个警报时,第二个警报会带有以下复选框: “ 不允许此页面创建更多消息”。在Internet Explorer驱动程序中,它会以某种方式阻止其被读取。其他浏览器(例如Chrome)没有任何问题。
要解决此问题,您只需要将网站添加到Internet Explorer选项的trusted sites
中。然后,您可以获取第二个警报的文本。