1、自动下载google-chrome: curl https://intoli.com/install-google-chrome.sh | bash
或者下载rpm版本的chrome然后用命令:
yum localinstall google-chrome-stable_current_x86_64.rpm 安装
2、将chromedriver驱动放到/usr/bin中
3、如果遇到The driver is not executable: /usr/bin/chromedriver,则进入/usr/bin目录使用chmod a+x chromedriver赋予可执行
注意:
selenium需要使用selenium-server.jar。
org.openqa.selenium.InvalidArgumentException:需要查看截图的链接是不是以"http://" 或者 "https://"开头。
安装chrome时提示缺少依赖可以使用:yum provides */缺少的依赖,查看依赖包的来源,找到base中所属的依赖包时,再使用命令:yum install 依赖包名称,进行下载。
测试截图发现图片中文字部分又方框和乱码,解决方案:
mkdir -p /usr/share/fonts/chinese/ #创建中文字体目录
cp songti.ttf /usr/share/fonts/chinese/ #将字体文件拷贝到/usr/share/fonts/chinese/中
cd /usr/share/fonts/chinese/ fc-cache -fv #为刚加入的字体设置缓存使之有效
fc-list #查看系统中的字体
public static String run(String htmlUrl){
String imgUrl = "";
//驱动地址
// System.setProperty("webdriver.chrome.driver","D:/chromedriver/chromedriver.exe");
System.setProperty("webdriver.chrome.driver", ReportConfig.DRIVERPATH);
ChromeOptions options=new ChromeOptions();
//设置 chrome 的无头模式
options.addArguments("--headless");
options.addArguments("--disable-gpu");
//解决DevToolsActivePort文件不存在的报错
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
//浏览器最大化
options.addArguments("--start-maximized");
//隐藏滚动条
options.addArguments("--hide-scrollbars");
//滚动高度
// options.addArguments("--window-size=1000,1680");
//启动一个 chrome 实例
WebDriver webDriver = new ChromeDriver(options);
//访问网址
webDriver.get(htmlUrl);
try {
Thread.sleep(10000);
//定位section元素
WebElement element = webDriver.findElement(By.id("app"));
int width = element.getSize().getWidth();
int height = element.getSize().getHeight();
// System.out.println(width+", "+height);
webDriver.manage().window().setSize(new Dimension(width,height));
//截取全屏
File file = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
//上传图片到服务器
MultipartFile multipartFile = FileUtil.fileToMultipartFile(file);
String dateStr = TimeUtils.dateToString(new Date(), TimeUtils.FORMAT_yMd);
imgUrl = BaiShanCloudUtil.uploadFile_One(multipartFile, BaiShanCloudUtil.IMGROOTPATH + "/daily/daily-" + dateStr, null);
System.out.println("图片上传地址:"+imgUrl);
//保存图片到本地
// FileUtils.copyFile(file, new File("D:/chromedriver/week-2021-07-22.png"));
// FileUtils.copyFile(file, new File("/opt/daily-img/week-2021-07-22.png"));
log.info("截图完成");
}catch (Exception e){
log.error("截图图片保存出错:"+e);
}finally {
//退出浏览器
webDriver.quit();
}
return imgUrl;
}