有谁知道如何禁用此功能?还是如何从已自动接受的警报中获取文本?
该代码需要工作,
driver.findElement(By.xpath("//button[text() = \"Edit\"]")).click();//causes page to alert() something Alert alert = driver.switchTo().alert(); alert.accept(); return alert.getText();
但是却给出了这个错误
No alert is present (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 2.14 seconds
我正在将FF 20与Selenium 2.32一起使用
就在前几天,我已经回答了类似的问题,所以它仍然很新鲜。您的代码失败的原因是,如果在处理代码时未显示警报,则该警告通常会失败。
值得庆幸的是 ,来自Selenium WebDriver的家伙们已经等待了它。对于您的代码,这样做很简单:
String alertText = ""; WebDriverWait wait = new WebDriverWait(driver, 5); // This will wait for a maximum of 5 seconds, everytime wait is used driver.findElement(By.xpath("//button[text() = \"Edit\"]")).click();//causes page to alert() something wait.until(ExpectedConditions.alertIsPresent()); // Before you try to switch to the so given alert, he needs to be present. Alert alert = driver.switchTo().alert(); alertText = alert.getText(); alert.accept(); return alertText;
您可以找到所有的API ExpectedConditions 在这里,如果你想这个方法后面的代码在这里。
ExpectedConditions
此代码还解决了问题,因为关闭警报后无法返回alert.getText(),因此我为您存储了一个变量。