java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记

目录

1.介绍

2.结果效果

2.1大图

2.2细节小图

3.依赖

4.代码

4.1引入

4.2具体代码

4.3执行

5.Linux下安装chrome和chromedriver

5.1yum安装

5.2下载下来安装

5.3安装必要的库

6.安装chromedriver,下载、解压、加权限

7.liunx 配置 驱动可执行权限 解决 无法执行驱动问题

7.1问题

7.2解决方案(赋予可执行权限)

8.linux 配置 中文编码 解决截图乱码问题

8.1centos6

8.2centos7 8



1.介绍

java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第1张图片java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第2张图片java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第3张图片

  • 1.调用webdriver
  • 2.使用驱动
  • 3.给刘刘览器驱动赋予可执行权限
  • 4.设置代码和系统中文语言包
  • 5.ok 

java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第4张图片java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第5张图片java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第6张图片

 

2.结果效果

java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第7张图片java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第8张图片java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第9张图片

2.1大图

java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第10张图片

 

2.2细节小图

java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第11张图片

 

3.依赖


			org.seleniumhq.selenium
			selenium-java
			3.9.1
		

java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第12张图片java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第13张图片java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第14张图片

 

4.代码

java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第15张图片java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第16张图片

 

4.1引入

import java.io.File;
import java.util.concurrent.TimeUnit;

import javax.swing.JPanel;

import org.openqa.selenium.Dimension;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeDriverService;
import org.openqa.selenium.chrome.ChromeOptions;
import org.springframework.stereotype.Service;
import org.springframework.util.FileCopyUtils;

 

4.2具体代码

package com.superman.global.service;




/**
 * 网页转图片
 * 
 * @author yushen
 *
 */
@Service
public class HtmlToImgPngUitl{
   
	/**
	 * 网页转图片
	 * 
	 *
	 * @param savePath  保存图片地址
	 * @param url	访问网页地址
	 * 
	 * @return boolean
	 */
	public boolean saveHtml(String savePath,String url){
		 
		// 谷歌驱动地址
		String path ="";
		String os = System.getProperty("os.name");  
		if(os.toLowerCase().startsWith("win")){  //微软系统
			path+="d:/test/999/chromedriver.exe";
		}else{//linux系统
			path+="/lspt/bigdatapro/chromedriver/chromedriver";
		}  
		
        File file = new File(path);// path: chromedirver.exe文件路径
        ChromeDriverService service =new  ChromeDriverService.Builder().usingDriverExecutable(file).usingAnyFreePort().build(); // 新建service 方便后面关闭chromedriver
        WebDriver driver = null;
        try {
            service.start(); // 开启服务
            ChromeOptions chromeOptions = new ChromeOptions();

            chromeOptions.addArguments("--headless");
            chromeOptions.addArguments("--no-sandbox");//无头浏览器

            chromeOptions.addArguments("--disable-gpu");//无界面
            chromeOptions.addArguments("lang=zh_CN.UTF-8");
            
            //设置必要参数
//            DesiredCapabilities dcaps = new DesiredCapabilities();
            //ssl证书支持
            chromeOptions.setCapability("acceptSslCerts", true);
            //截屏支持
            chromeOptions.setCapability("takesScreenshot", true);
            //css搜索支持
            chromeOptions.setCapability("cssSelectorsEnabled", true);

            //生成无头浏览器
            driver = new ChromeDriver(service, chromeOptions);
            //设置隐性等待
            driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
            long start = System.currentTimeMillis();
            //打开页面
            driver.get(url);
            // 获取页面尺寸
            Long width = (Long) ((ChromeDriver) driver).executeScript("return Math.max(document.body.scrollWidth, " +
                    "document.body.offsetWidth, document.documentElement.clientWidth, document.documentElement" +
                    ".scrollWidth, document.documentElement.offsetWidth);");

            Long height = (Long) ((ChromeDriver) driver).executeScript("return Math.max(document.body.scrollHeight, " +
                    "document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement" +
                    ".scrollHeight, document.documentElement.offsetHeight);");
//          重新设置页面尺寸
            Dimension dimension = new Dimension(width.intValue()+100, height.intValue());
            driver.manage().window().setSize(dimension);
            Thread.sleep(3000L);
            
            //指定了OutputType.FILE做为参数传递给getScreenshotAs()方法,其含义是将截取的屏幕以文件形式返回。
            File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
            Thread.sleep(2000L);
            FileCopyUtils.copy(srcFile, new File(savePath)); // 复制文件 savePath:图片保存路径
           System.out.println("图片生成完毕,耗时:{}ms"+ (System.currentTimeMillis() - start));
           return true;
        } catch (Exception e) {
        	System.out.println("保存异常,e="+ e.getMessage());
        } finally {
        // 关闭服务
            driver.quit();
            service.stop();
        }
		return false;
    }
    
   
}

 

4.3执行

 public static void main(String[] args) {
    	System.out.println("start");
    	new HtmlToImgPngUitl().saveHtml(
    			"d:/test/999/00aaaaaaaaaaa2.png"
    			,"https://blog.csdn.net/weixin_42749765");

    	System.out.println("end");
    }

java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第17张图片java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第18张图片

5.Linux下安装chrome和chromedriver

5.1yum安装

 yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

5.2下载下来安装

wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
yum install ./google-chrome-stable_current_x86_64.rpm

5.3安装必要的库

yum install mesa-libOSMesa-devel gnu-free-sans-fonts wqy-zenhei-fonts

我没装上,但也无伤大雅哈哈

java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第19张图片java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第20张图片

6.安装chromedriver,下载、解压、加权限

> wget  http://npm.taobao.org/mirrors/chromedriver/
> unzip chromedriver_linux64.zip
> chmod +x /usr/bin/chromedriver

哦了

 

7.liunx 配置 驱动可执行权限 解决 无法执行驱动问题

java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第21张图片java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第22张图片

7.1问题

  • linux 系统java自动化启动google浏览器 提示:The driver is not executable: /home/chromedriver_linux64/chromedriver

7.2解决方案(赋予可执行权限)

chmod a+x chromedriver

 

8.linux 配置 中文编码 解决截图乱码问题

8.1centos6

yum -y install fonts-chinese 

8.2centos7 8

 yum  groupinstall  "fonts"

然后重启即可,我之前没重启也ok ,不得瑟哈哈

java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第23张图片java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第24张图片java WebDriver + selenium 调用 谷歌驱动 chromedriver 实现 在 liunx 环境下 无界面 截图 加自动获取页面最大真实页面内容高宽 加各类型踩坑日记_第25张图片

然后截图就是中文不乱吗喽

 

 

ok

 

持续更新

 

 

 

你可能感兴趣的:(springboot,java,java,selenium,linux,centos,截图)