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

绝地灬酷狼 2024-02-19 12:24 153阅读 0赞

前言: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目录下,尝试运行:

  1. [root@seersitapp05 drivers]# ./chromedriver
  2. Starting ChromeDriver 2.36.540471 (9c759b81a907e70363c6312294d30b6ccccc2752) on port 9515
  3. 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代码如下:

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

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

  1. WebDriver driver = null;
  2. logger.info("Selenium打开url:" + openUrl + " chromeDriverUrl:" + chromeDriverUrl);
  3. System.setProperty("webdriver.chrome.driver", chromeDriverUrl);
  4. try {
  5. driver = new ChromeDriver();
  6. driver.get(openUrl);
  7. // 超过20秒即为超时,会抛出Exception
  8. driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);
  9. driver.getPageSource();
  10. logger.info("Selenium打开页面title:"+driver.getTitle());
  11. //等待页面加载完成
  12. Thread.sleep(10 * 1000);
  13. } catch (Exception e) {
  14. logger.error("getHtmlBySelenium异常:url-->" + openUrl + e);
  15. } finally {
  16. driver.close();
  17. driver.quit();
  18. }

发表评论

表情:
评论列表 (有 0 条评论,153人围观)

还没有评论,来说两句吧...

相关阅读