centos7环境用selenium打开chrome浏览器java代码

前言:centos系统最好用7以上版本,老版本对chrome兼容不太好。前面环境安装配置过程可参考:https://blog.csdn.net/zhuyiquan/article/details/79537623
1、CentOS/RedHat 7以上安装google-chrome可以完全参考 https://intoli.com/blog/installing-google-chrome-on-centos/ (6及以下版本不适用,一定请大家注意,强调三次)。
2、最新版本Chromedriver安装
为了匹配chrome版本Google Chrome 65.0.3325.146,下载最新版本的chromedriver 2.3.6 linux64位http://npm.taobao.org/mirrors/chromedriver/2.36/chromedriver_linux64.zip
解压后部署到/opt/drivers目录下,尝试运行:

[root@seersitapp05 drivers]# ./chromedriver 
Starting ChromeDriver 2.36.540471 (9c759b81a907e70363c6312294d30b6ccccc2752) on port 9515
Only local connections are allowed.

成功!如果在执行./chromedriver的时候报permission denied错误说明权限问题,为了获得执行权限,借助chmod指令修改文件权限即可。如下所示:chomd 777 chromedriver chomd 777为最高权限,这样再执行上面指令即可打开chromedriver了。(如果,Java Selenium运行时chromedriver可能因为找不到localhost报超时异常(Timed out waiting for [http://localhost:9567/status])那么要修改/etc/hosts,绑定127.0.0.1 localhost,即可。)
3、chromedriver与chrome各版本对应关系参考:https://www.cnblogs.com/qingqing-919/p/9055285.html
chromedriver各个版本下载地址:http://chromedriver.storage.googleapis.com/index.html
4、上面第二步已经打开chromedriver服务,端口号是9515,所以java代码如下:

		WebDriver driver = null;
    	ChromeOptions chromeOptions = new ChromeOptions();
    	chromeOptions.addArguments("--headless","--no-sandbox","--disable-gpu","--window-size=1290,1080");
    	//chromeOptions.addArguments("headless");//无界面参数
        //chromeOptions.addArguments("no-sandbox");//禁用沙盒
        DesiredCapabilities chromeCap = DesiredCapabilities.chrome();
        chromeCap.setCapability("chromeOptions", chromeOptions);
        try {
			URL remoteAddress = new URL("http://localhost:9515");
			driver = new RemoteWebDriver(remoteAddress, chromeCap);
	        driver.manage().window().maximize();
	        driver.get(openUrl);
	        // 超过20秒即为超时,会抛出Exception
	        driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);
	        driver.getPageSource();
	        logger.info("Selenium打开页面title:"+driver.getTitle());
	        //等待页面加载完成
	        Thread.sleep(10 * 1000);
        } catch (Exception e) {
        	e.printStackTrace();
        } finally {
            driver.close();
            driver.quit();
        }

参数说明
–headless 必须使用静默模式,无GUI界面;
–disable-gpu 必须要禁用掉gpu,因为服务器没有图形显示相关支持;
–window-size 自定义窗口大小,因为浏览器的Window大小会决定获取到元素的可能性。
**注:**如果是在windows环境的话,chromedriver要下载windows版本,然后java代码如下:

        WebDriver driver = null;
        logger.info("Selenium打开url:" + openUrl + " chromeDriverUrl:" + chromeDriverUrl);
        System.setProperty("webdriver.chrome.driver", chromeDriverUrl);
        try {
            driver = new ChromeDriver();
            driver.get(openUrl);
            // 超过20秒即为超时,会抛出Exception
            driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);
            driver.getPageSource();
            logger.info("Selenium打开页面title:"+driver.getTitle());
            //等待页面加载完成
            Thread.sleep(10 * 1000);
        } catch (Exception e) {
            logger.error("getHtmlBySelenium异常:url-->" + openUrl + e);
        } finally {
            driver.close();
            driver.quit();
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值