網上現有的解決方案要么是windows下的,要么是python的,搞了一天終於解決了,記錄如下。
1 下載chrome linux版和對應版本的webdriver,我這里使用的是chrome66和chromedriver2.38,selenium版本選最新的就行,我這里用的是3.11
chrome:自己找
selenium:自己找
chromedriver:http://npm.taobao.org/mirrors/chromedriver/
2 java代碼
System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver"); //chromederiver存放位置
System.setProperty("webdriver.chrome.bin", "/opt/google/chrome/chrome"); //chrome安裝位置
ChromeOptions options = new ChromeOptions();
options.addArguments("headless"); //無界面參數
options.addArguments("no-sandbox"); //禁用沙盒 就是被這個參數搞了一天
WebDriver driver = new ChromeDriver(options);
driver.get("http://www.baidu.com");
System.out.println(driver.getTitle());
3 解決思路
按網上的方法整了半天都沒搞定,最后一直查資料,查到作者寫的說明,說可以在linux下使用如下參數無界面啟動chrome
./chrome --handless
使用此命令后報錯ERROR:zygote_host_impl_linux.cc(88)] Running as root without --no-sandbox is not supported.
意思是在root用戶下不能開啟沙箱模式!
於是用如下參數就正常啟動了!
./chrome --handless --no-sandbox
所以在java代碼里寫入該參數就行了!
參考:
http://www.cnblogs.com/technologylife/p/5829944.html
https://developers.google.cn/web/updates/2017/04/headless-chrome
https://intoli.com/blog/running-selenium-with-headless-chrome/
