如何使用 Selenium WebDriver 截取整个网页的屏幕截图( _整页屏幕截图_),而不仅仅是部分( _从上到下_)?
我的代码: ( _Java 绑定_)
System.setProperty("webdriver.chrome.driver","/home/alex/Downloads/chromedriver_linux64/chromedriver");
WebDriver driver = new ChromeDriver();
driver.get("http://google.com");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File(RESULT_FILENAME));
关于如何解决这个问题的任何想法?
原文由 Placinta Alexandru 发布,翻译遵循 CC BY-SA 4.0 许可协议
LE: 我看到很多人对整页截图感兴趣,所以我想我可以用一些积极的东西( _银弹_)来更新答案。
有相当多的 Web 测试框架可以( _只需最少的设置和工作量_)生成 整页屏幕截图。我来自 NodeJS 测试环境,所以我只能保证以下内容: WebdriverIO 和 Google 的 Puppeteer 。
如果有人对使用 WebdriverIO 的简单方法感兴趣,请查看 此 答案。
简短的回答是 不,你不能, _如果你只使用硒_(详细原因如下)。但是,您可以做的是充分利用设备的(显示器) 视口。
因此,使用
ChromeOptions()
启动浏览器实例(驱动程序),这是设置 ChromeDriver 特定功能的方法。我们可以做到以下几点:--start-maximized
开关);F11
上的键,Control+Cmd+F
在 Mac 上,使用--start-fullscreen
开关)。Now regarding the full page problem, all drivers (
chromedriver
,geckodriver
,IEDriver
,EdgeDriver
, etc.) are implementing the WebDriver W3C 标准。因此,它们取决于 WebDriver 团队想要公开不同功能的方式,在我们的例子中是 “截屏” 。如果您阅读定义,它会清楚地说明以下内容:
在传统方面,一些驱动程序能够生成整页屏幕截图( 在此处 阅读更多相关信息),例如旧的 FirefoxDriver、IEDriver 等。情况不再如此,因为它们现在都实现了(不折不扣)WebDriver W3C 标准。