Linux安装Chrome和chromedriver进行截图

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;
    }

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值