繁体   English   中英

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

[英]How to capture screen of pop up window using 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();
  }

目前是不可能的。 Webdriver 的截图例程仅适用于 DOM; 但是alert存在于DOM之外,它是一个单独的窗口,截图例程没有办法包含它。

在 Selenium 的问题跟踪器中,该问题已被报告并标记为按预期工作: https : //code.google.com/p/selenium/issues/detail? id =4412

使用 selenium 无法使用警报框截取屏幕截图。 您需要接受或拒绝警报框。 如果不这样做,就无法捕获屏幕截图。 当您不处理警报框时,会抛出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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM