Selenium:获取当前状态的网页截图

时间:2015-09-24 00:45:50

标签: selenium selenium-webdriver

我一直在研究如何使用selenium web驱动程序来截取网页截图。结果看起来很有希望。我遇到的唯一问题是我可以找到的所有示例(例如Take a screenshot with Selenium WebDriver),它只允许您导航到网页,然后拍摄一张快照,该快照仅提供页面的初始状态。但是,我需要截取的网页有很多JS内容和用户交互。是否可以在selenium中设置网页的当前状态?

例如,用户登录我的应用程序,单击几个按钮,选项卡并打开模式对话框。如何使用用户执行的所有用户交互来截取页面的屏幕截图?

我能想到的是将整个HTML文档发送到服务器并生成静态html页面,然后让webdirver截取静态html页面的屏幕截图。

提前谢谢。

3 个答案:

答案 0 :(得分:0)

你可以,但据我所知,你还必须自己调用代码来截取屏幕截图。所以我们所做的是创建实用程序方法,我们称之为与网页交互并在每次交互后截取屏幕截图。例如,我们有许多与此类似的方法:

protected void waitAndSelectLabeled(String label, String text) throws InterruptedException {
    jGrowl("Select " + text + " labeled with " + label);
    waitAndSelectBy(By.xpath("//th/label[contains(text(), '" + label + "')]/../following-sibling::*//select"), text);
    screenshot();
}

答案 1 :(得分:0)

您可以随时获取页面的屏幕截图...只需在想要捕获页面的当前状态时调用代码即可。您已经拥有该链接中的代码。

答案 2 :(得分:0)

你可以随时调用一些类似的功能

private static void screenshot(int i)
{
  driver.manage().window().maximize(); \\Maximize to capture complete screen  
  Thread.sleep(1000);
  File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
  FileUtils.copyFile(scrFile, new File("C:\\screenshot"+i+".png"), true); \\To avoid overwritting of screenshots. We used 'i'.
}