如何使用Selenium WebDriver捕获弹出窗口的屏幕?

时间:2013-07-03 12:01:13

标签: java popup selenium-webdriver

我试图捕捉弹出窗口的屏幕而没有成功。

我将此代码用于“常规”捕获屏幕:

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();
  }

2 个答案:

答案 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();