我试图捕捉弹出窗口的屏幕而没有成功。
我将此代码用于“常规”捕获屏幕:
File scrFile = ((TakesScreenshot)alertDialog).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("c:\\tmp\\screenshot.png"));
当出现弹出窗口时我想捕捉弹出屏幕,我该怎么做?
public void checkPopup() throws IOException
{
Alert alertDialog = driver.switchTo().alert();
File scrFile = ((TakesScreenshot)alertDialog).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("c:\\tmp\\screenshot.png"));
String alertText = alertDialog.getText();
}
答案 0 :(得分:0)
目前无法实现。 Webdriver的截图例程仅适用于DOM;但是警报存在于DOM之外,它是一个单独的窗口,屏幕截图例程无法包含它。
在Selenium的问题跟踪器中,已报告问题并将其标记为按预期工作:https://code.google.com/p/selenium/issues/detail?id=4412
答案 1 :(得分:0)
使用硒无法在警告框内截图。您需要接受还是拒绝警报框。如果不这样做,就无法捕获屏幕截图。当您不处理警报框时,将引发UnexpectedAlertPresentException
。在我的情况下,我接受警报框并获取URL的屏幕截图。
以下是代码片段。
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
System.out.println("ERROR: (ALERT BOX DETECTED) - ALERT MSG : " + alertText);
alert.accept();
File outputFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
String imageDetails = "C:\\Images";
File screenShot = new File(imageDetails).getAbsoluteFile();
FileUtils.copyFile(outputFile, screenShot);
System.out.println("Screenshot saved: {}" + imageDetails);
driver.close();