如何使用Selenium和Java获取完整网页的屏幕截图?
如何使用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));
关于如何解决这个问题的任何想法?
回答:
我看到很多人都对整页的截图感兴趣,所以我想我可能会用一些肯定的答案( 银色子弹 )来更新答案。
有很多Web测试框架可以( 只需最少的设置和工作 )即可生成
。我来自NodeJS测试环境,因此只能担保以下内容:WebdriverIO和Google的Puppeteer。
如果有人对使用WebdriverIO的简便方法感兴趣,请查看此答案。
简而言之, 如果您仅使用Selenium , 则 , 您不能
。但是,您可以做的是充分利用设备的(监视)视口。
因此,请使用来启动浏览器实例(驱动程序)ChromeOptions()
,这是设置ChromeDriver特定功能的方法。我们可以执行以下操作:
- 最大化窗口(使用
--start-maximized
开关); - 全屏显示(
F11
在WindowsControl+Cmd+F
上为-key,在Mac 上为- 键,使用--start-fullscreen
开关)。 - 注意:可在此处找到Chrome命令行开关的完整列表。
您的代码应如下所示:
// Setting your Chrome options (Desired capabilities)ChromeOptions options = new ChromeOptions();
options.add_argument('--start-maximized');
options.add_argument('--start-fullscreen');
// Creating a driver instance with the previous capabilities
WebDriver driver = new ChromeDriver(options);
// Load page & take screenshot of full-screen page
driver.get("http://google.com");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
现在关于整版的问题,所有的驱动程序(chromedriver
,geckodriver
,IEDriver
,EdgeDriver
,等)正在实施的webdriver
W3C标准。因此,它们取决于WebDriver团队希望公开不同功能的功能的方式,在我们的例子中为“ Take
Screenshot”。
如果您阅读该定义,则它明确指出以下内容:
“获取屏幕截图”命令获取顶级浏览上下文的 的屏幕截图。
从旧的角度来看,某些驱动程序能够生成完整的屏幕截图(在此处了解更多信息),例如旧的FirefoxDriver,IEDriver等。现在已经不再是这样了,因为它们现在都实现了WebDriver
W3C标准。
以上是 如何使用Selenium和Java获取完整网页的屏幕截图? 的全部内容, 来源链接: utcz.com/qa/428982.html