Selenium:拍摄网页当前状态的屏幕截图

Selenium:拍摄网页当前状态的屏幕截图,selenium,selenium-webdriver,Selenium,Selenium Webdriver,我一直在研究如何使用SeleniumWeb驱动程序拍摄网页截图。结果看起来很有希望。我唯一的问题是从我能找到的所有示例中(例如),它只允许您导航到一个网页,然后拍摄一个快照,该快照只提供页面的初始状态。然而,我需要截图的网页有很多JS内容和用户交互。是否可以在selenium中设置网页的当前状态 例如,一个用户登录我的应用程序,单击几个按钮、选项卡并打开一个模式对话框。我如何拍摄该页面的屏幕截图,以及用户执行的所有用户交互 我能想到的是将整个HTML文档发送到服务器并生成一个静态HTML页面,然

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

例如,一个用户登录我的应用程序,单击几个按钮、选项卡并打开一个模式对话框。我如何拍摄该页面的屏幕截图,以及用户执行的所有用户交互

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


Thx提前

你可以,但据我所知,你仍然需要调用代码自己拍摄屏幕截图。因此,我们所做的是创建实用方法,我们调用这些方法与网页交互,并在每次交互后截图。例如,我们有很多类似的方法:

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

你可以随时拍摄页面截图。。。当您想要捕获页面的当前状态时,只需调用代码即可。该链接中已经有代码。

您可以随时调用类似的函数

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'.
}

我想我需要再解释一遍。假设一个用户登录到我的应用程序,然后单击几个按钮、选项卡并打开一个模式对话框。我如何拍摄用户正在查看的页面截图?@LeeLe你是指真实用户还是使用Selenium模拟的用户?如果你指的是一个真正的用户,你不能使用Selenium。你必须让用户在你控制的桌面上,远程触发屏幕截图。Selenium用于编写模拟用户在站点上执行操作的脚本。