当前位置: 首页 > 知识库问答 >
问题:

仅截取视口(Firefox和IE)的屏幕截图,而不是整个页面,使用Selenium WebDrive C#

陶沛
2023-03-14

我在浏览器栈上使用Selenium网络驱动程序自动测试,当我在Firefox和IE上截图时,它会截图整个页面。但是由于我的页面包含一个很长的列表——屏幕截图太长了,因此它不是一个清晰的图像,很难看出页面的行为是否正确。我需要它像Chrome一样精确:仅显示视口宽度和高度的屏幕截图。在Firefox和IE上可能吗?

我使用的代码:

Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot();
ss.SaveAsFile(imageSave, System.Drawing.Imaging.ImageFormat.Png);

共有1个答案

侯令雪
2023-03-14

升级到Selenium 3版本。

Selenium 2.*版本中,完整的网页作为屏幕截图。

Selenium 3.*版本,仅将网页的可见部分作为屏幕截图。

因此,只需升级selenium版本,就可以实现这种行为,同样的代码也应该可以工作。

来自Selenium官方文档:

Screenshot ss = ((ITakesScreenshot)webDriver).GetScreenshot();
string screenshot = ss.AsBase64EncodedString;
byte[] screenshotAsByteArray = ss.AsByteArray;
ss.SaveAsFile(activeDir + TestSuiteName + "//" + FileNanme + imageFormat, ImageFormat.Jpeg);

我在Python中使用Selenium 3.0.2验证了此行为Chrome

from selenium import webdriver

driver = webdriver.Firefox()
driver.get('http://stackoverflow.com/users/2575259/naveen')
driver.get_screenshot_as_file('D:/Naveen/so/google.png') 
driver.quit()
 类似资料:
  • 问题内容: 我只需要当前视口的屏幕截图,尤其要注意滚动位置。基本上是当前Chrome驱动程序的功能。 从我所阅读的内容看来,这应该是完全可能的,但是由于某些原因,screenshot命令始终努力获取完整的文档截图。实际上,IE驱动程序会拍摄多个视口镜头,然后将它们缝合在一起。 我使用的是Ruby Webdriver,无论如何我都看不到仅截取视口的屏幕截图。可能吗? 问题答案: 在处理WebDriv

  • 问题内容: 是否可以使用JavaScript截取网页的屏幕截图,然后将其提交回服务器? 我不太担心浏览器的安全性问题。等,因为实施将针对HTA。但是有可能吗? 问题答案: 我已经通过使用ActiveX控件为HTA完成了此操作。在VB6中构建控件以截取屏幕截图非常容易。我必须使用keybd_event API调用,因为SendKeys无法执行PrintScreen。这是该代码: 这只会使您到达将窗口

  • 我在VPS的Xvfb上运行火狐。我想做的是对页面进行全页截图。 我可以使用以下方法将Firefox重定向到特定页面 并使用ImageMagick进行屏幕截图(在X内部) 问题是,大部分页面需要滚动,我无法事先知道高度。 另一种方法是挑一个非常大的高度(像4000px)然后对图像进行处理,去掉无用的部分。但那是不必要的处理。 我发现了许多Firefox插件,但我正在寻找一个可以使用Shell命令行编

  • 目前,我正在尝试使用SeleniumWebDriver捕获一个屏幕截图。但我只能获得整个页面的屏幕截图。然而,我想要的只是捕获页面的一部分,或者基于ID或任何特定元素定位器捕获特定元素。(例如,我希望用image id=“Butterfly”捕捉图片) 有没有办法按所选项目或元素捕获屏幕截图?

  • 我只需要当前视口的屏幕截图,特别是滚动位置。基本上是当前Chrome驱动程序所做的。 据我所知,这似乎是完全可能的,但出于某种原因,屏幕截图命令总是努力拍摄完整的文档屏幕截图。事实上,IE驱动程序拍摄多个视口快照,然后将它们缝合在一起。 我使用的是Ruby webdriver,但我看不到任何东西,只能截取视口的屏幕。可能吗?

  • 问题内容: 这个问题是我提出的另一个问题的一部分。但是,我已经找到了这部分的答案,并认为这对其他人也将是有用的。我其他问题的一部分: 我正在结合使用Serenity和黄瓜来进行自动屏幕测试,并希望在我的Serenity报告中包括整页的屏幕截图。报告中的屏幕截图通常只是视口的捕获。但是,通常这并不能提供足够的信息,因为这只是屏幕的一部分。 我发现捕获宁静屏幕快照是驱动程序实现的一部分。由于大多数驱动