java如何使用SeleniumWebDriver捕获弹出窗口的屏幕?
我试图捕获弹出窗口的屏幕,但没有成功
我将此代码用于“常规”捕获屏幕:
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();
}
# 1 楼答案
目前这是不可能的。Webdriver的屏幕截图例程仅适用于DOM;但是该警报存在于DOM之外,它是一个单独的窗口,屏幕截图例程无法包含它
在Selenium的问题跟踪程序中,问题已被报告并标记为按预期工作:https://code.google.com/p/selenium/issues/detail?id=4412
# 2 楼答案
无法使用selenium拍摄警报框的屏幕截图。您需要接受或拒绝警报框。如果不这样做,就不可能捕获屏幕截图。当您不处理警报框时,将抛出
UnexpectedAlertPresentException
。在我的场景中,我接受警报框并拍摄URL的屏幕截图下面是代码片段