3

我正在尝试捕获弹出窗口的屏幕但没有成功。

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

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

2 回答 2

0

目前是不可能的。Webdriver 的截图例程仅适用于 DOM;但是警报存在于DOM之外,它是一个单独的窗口,并且截图例程无法包含它。

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

于 2015-07-16T10:56:40.797 回答
0

使用 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();
于 2019-11-04T09:59:39.720 回答