首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium:截取当前状态下的网页屏幕截图

Selenium:截取当前状态下的网页屏幕截图
EN

Stack Overflow用户
提问于 2015-09-24 08:45:50
回答 3查看 857关注 0票数 0

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

例如,一个用户登录了我的应用程序,点击了几个按钮,打开了一个模式对话框。如何截取包含用户已执行的所有用户交互的页面截图?

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

提前进行Thx检查。

EN

回答 3

Stack Overflow用户

发布于 2015-09-24 09:54:45

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

代码语言:javascript
复制
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();
}
票数 0
EN

Stack Overflow用户

发布于 2015-09-24 10:04:46

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

票数 0
EN

Stack Overflow用户

发布于 2015-09-24 18:30:45

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

代码语言:javascript
复制
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'.
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32751657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档