我在弹出窗口后使用以下代码截取应用程序的屏幕截图。
Alert alert = driver.switchTo().alert();
File scrFile= ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("G:\\Screens\\sc1.jpg"));
String alertMsg = alert.getText();
System.out.println(alertMsg);
alert.accept();
但它正在抛出这个异常
线程“main”中的异常org.openqa.selenium.UnhandledAlertException:存在模态对话框:评估名称已存在。
但如果删除屏幕截图程序,代码工作正常。
答案 0 :(得分:6)
你必须在拍摄截图之前处理警报......你可以在这里阅读更多信息 https://code.google.com/p/selenium/issues/detail?id=4412
答案 1 :(得分:1)
您始终可以使用Robot获取整个页面的屏幕截图。我刚试了一下,这段代码正在运行:
WebDriver driver;
@Before
public void init() throws Exception {
driver = new FirefoxDriver();
driver.get("http://www.tizag.com/javascriptT/javascriptalert.php");
}
@Test
public void bla() throws AWTException, IOException {
WebElement element = driver.findElement(By.xpath("//input[@type=\"button\"]"));
// Trigger the alert
element.click();
BufferedImage image = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
ImageIO.write(image, "png", new File("c:\\localdev\\bla.png"));
driver.switchTo().alert().accept();
}