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();
}
还没有评论,来说两句吧...