簡體   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