1.前提你的驅動和版本對應無問題時,依舊報未知錯誤無法啟動chrome
解決方法加上兩行:
options.addArguments("no-sandbox");
options.addArguments("--disable-gpu");
其中
“–no-sandbox”參數是讓Chrome在root權限下跑
“–headless”參數是不用打開圖形界面
奉上我的TestNg源碼:
package com.chen.autocases; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.Assert; import org.testng.annotations.Test; import org.openqa.selenium.WebDriver; import org.apache.log4j.Logger; import java.util.concurrent.TimeUnit; public class TestDemo { private static Logger log = Logger.getLogger(TestDemo.class); public WebDriver driver; /* @param import java.util.HashMap; import java.util.Map; options.addArguments("--disable-popup-blocking"); // 禁用阻止彈出窗口 options.addArguments("no-sandbox"); // 啟動無沙盒模式運行 options.addArguments("disable-extensions"); // 禁用擴展 options.addArguments("no-default-browser-check"); // 默認瀏覽器檢查 Map<String, Object> prefs = new HashMap(); prefs.put("credentials_enable_service", false); prefs.put("profile.password_manager_enabled", false); options.setExperimentalOption("prefs", prefs);// 禁用保存密碼提示框 */ @BeforeClass public void beforeClass() { System.setProperty("webdriver.chrome.driver", "/usr/local/chrome/chromedriver"); ChromeOptions options = new ChromeOptions(); options.setHeadless(Boolean.TRUE); options.addArguments("no-sandbox"); options.addArguments("--disable-gpu"); options.addArguments("--start-maximized"); // 啟動時自動最大化窗口 driver = new ChromeDriver(options); driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); driver.get("http://www.baidu.com"); log.info("用例開始執行------"); } @AfterClass public void afterClass(){ log.info("用例結束后運行----"); driver.quit(); } @Test public void testcase1(){ log.info("testcase1"); Assert.assertTrue(true); } @Test public void testcase2(){ Assert.assertTrue(true); log.debug("testcase2"); } }