java使用selenium chrome headless网页截长图

  1. 新闻资讯
  2. 技术百科
公司新闻 案例分享 技术百科 行业动态

java使用selenium chrome headless网页截长图

来源:奇站网络 浏览量:257 发布日期: 2020-12-07

1、pom

  1. <dependency>
  2. <groupId>org.seleniumhq.selenium</groupId>
  3. <artifactId>selenium-java</artifactId>
  4. </dependency>

2、脚本动态获取网页高度

  1. // 设置驱动地址
  2. System.setProperty("webdriver.chrome.driver", "D:\\apps\\headless\\chromedriver.exe");
  3. ChromeOptions options = new ChromeOptions();
  4. // 设置谷歌浏览器exe文件所在地址
  5. options.setBinary("C:\\Users\\qizhan\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe");
  6. // 这里是要执行的命令,如需修改截图页面的尺寸,修改--window-size的参数即可
  7. options.addArguments("--headless", "--disable-gpu", "--window-size=1920,1200", "--ignore-certificate-errors");
  8. ChromeDriver driver = new ChromeDriver(options);
  9. // 访问页面
  10. driver.get("http://sina.com.cn");
  11. //执行脚本
  12. String js1 = "return document.body.clientHeight.toString()";
  13. String js1_result = driver.executeScript(js1) + "";
  14. int height = Integer.parseInt(js1_result);
  15. driver.manage().window().setSize(new Dimension(830, height + 100));
  16. // 页面等待渲染时长,如果你的页面需要动态渲染数据的话一定要留出页面渲染的时间,单位默认是秒
  17. Wait<WebDriver> wait = new WebDriverWait(driver, 3);
  18. wait.until(new ExpectedCondition<WebElement>() {
  19. public WebElement apply(WebDriver d) {
  20. // 等待前台页面中 id为“kw”的组件渲染完毕,后截图
  21. // 若无需等待渲染,return true即可。 不同页面视情况设置id
  22. return d.findElement(By.id("app"));
  23. }
  24. });
  25. // 获取到截图的文件
  26. File screenshotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
  27. if ((screenshotFile != null) && screenshotFile.exists()) {
  28. // 截取到的图片存到本地
  29. FileOutputStream out = null;
  30. FileInputStream in = null;
  31. try {
  32. in = new FileInputStream(screenshotFile);
  33. out = new FileOutputStream("D:\\apps\\headless\\cut1.png");
  34. byte[] b = new byte[1024];
  35. while (true) {
  36. int temp = in.read(b, 0, b.length);
  37. // 如果temp = -1的时候,说明读取完毕
  38. if (temp == -1) {
  39. break;
  40. }
  41. out.write(b, 0, temp);
  42. }
  43. } catch (Exception e) {
  44. // TODO异常处理
  45. }
  46. }

厦门奇站网络科技有限公司

电话:13313868605

QQ:3413772931

地址:厦门软件园三期A02号

网站地图


                    扫一扫加我咨询