我正在寻找使用selenium在Chrome中获取整页截图的选项。似乎默认的屏幕截图选项仅采用浏览器视图端口大小的可见部分。
我尝试实现我在互联网上阅读的解决方法,我可以通过滚动使用Javascript拍摄多个屏幕截图,然后缝合图像以使其成为完整的页面截图。但是,在某些情况下,最终图像会与原始页面重叠并断开连接。
我还读到以下代码可以使用Chrome获取全屏截图,但没有成功:
public class chrome_test_service {
public static void main(String[] args) throws IOException, InterruptedException{
System.setProperty("webdriver.chrome.driver", ".\chromedriver.exe");
ChromeDriverService.Builder builder = new ChromeDriverService.Builder();
ChromeDriverService srvc = builder.usingDriverExecutable(new File(".\chromedriver.exe")).build();
try {
srvc.start();
} catch (IOException e) {
e.printStackTrace();
}
WebDriver driver = new ChromeDriver(srvc);
JavascriptExecutor js = (JavascriptExecutor) driver;
driver.get("http://www.google.com");
WebElement searchBox = driver.findElement(By.name("q"));
searchBox.sendKeys("Chrome Driver");
Thread.sleep(2000);
Object width=js.executeScript("return Math.max(document.body.scrollWidth, document.body.offsetWidth, document.documentElement.clientWidth, document.documentElement.scrollWidth, document.documentElement.offsetWidth);");
Object height=js.executeScript("return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);");
Dimension dimension = new Dimension(Integer.parseInt(width.toString()), Integer.parseInt(height.toString()));
driver.manage().window().setSize(dimension);
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
synchronized (scrFile)
{
FileUtils.copyFile(scrFile, new File("abc.jpg"));
}
driver.close();
driver.quit();
}
}
有关使用Chrome获取Firefox等整页截图的任何建议吗?