1、pom
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
</dependency>
2、脚本动态获取网页高度
// 设置驱动地址
System.setProperty("webdriver.chrome.driver", "D:\\apps\\headless\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
// 设置谷歌浏览器exe文件所在地址
options.setBinary("C:\\Users\\qizhan\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe");
// 这里是要执行的命令,如需修改截图页面的尺寸,修改--window-size的参数即可
options.addArguments("--headless", "--disable-gpu", "--window-size=1920,1200", "--ignore-certificate-errors");
ChromeDriver driver = new ChromeDriver(options);
// 访问页面
driver.get("http://sina.com.cn");
//执行脚本
String js1 = "return document.body.clientHeight.toString()";
String js1_result = driver.executeScript(js1) + "";
int height = Integer.parseInt(js1_result);
driver.manage().window().setSize(new Dimension(830, height + 100));
// 页面等待渲染时长,如果你的页面需要动态渲染数据的话一定要留出页面渲染的时间,单位默认是秒
Wait<WebDriver> wait = new WebDriverWait(driver, 3);
wait.until(new ExpectedCondition<WebElement>() {
public WebElement apply(WebDriver d) {
// 等待前台页面中 id为“kw”的组件渲染完毕,后截图
// 若无需等待渲染,return true即可。 不同页面视情况设置id
return d.findElement(By.id("app"));
}
});
// 获取到截图的文件
File screenshotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
if ((screenshotFile != null) && screenshotFile.exists()) {
// 截取到的图片存到本地
FileOutputStream out = null;
FileInputStream in = null;
try {
in = new FileInputStream(screenshotFile);
out = new FileOutputStream("D:\\apps\\headless\\cut1.png");
byte[] b = new byte[1024];
while (true) {
int temp = in.read(b, 0, b.length);
// 如果temp = -1的时候,说明读取完毕
if (temp == -1) {
break;
}
out.write(b, 0, temp);
}
} catch (Exception e) {
// TODO异常处理
}
}