我一直在研究如何使用selenium web驱动程序来截取网页截图。结果看起来很有希望。我遇到的唯一问题是我可以找到的所有示例(例如Take a screenshot with Selenium WebDriver),它只允许您导航到网页,然后拍摄一张快照,该快照仅提供页面的初始状态。但是,我需要截取的网页有很多JS内容和用户交互。是否可以在selenium中设置网页的当前状态?
例如,用户登录我的应用程序,单击几个按钮,选项卡并打开模式对话框。如何使用用户执行的所有用户交互来截取页面的屏幕截图?
我能想到的是将整个HTML文档发送到服务器并生成静态html页面,然后让webdirver截取静态html页面的屏幕截图。
提前谢谢。答案 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'.
}