Ubuntu 20.04下Selenium ChromeDriver启动会话失败(响应码500)求助
问题解决:Ubuntu 20.04 下 Selenium Chrome DevToolsActivePort 异常退出问题
核心原因与解决步骤
1. 禁用沙箱与共享内存限制
虚拟机环境中Chrome默认沙箱机制会导致启动失败,同时/dev/shm分区过小也会引发异常。需在ChromeOptions中添加以下参数:
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; public class CrawlerTest { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "/path/to/your/chromedriver"); ChromeOptions options = new ChromeOptions(); // 解决虚拟机沙箱限制 options.addArguments("--no-sandbox"); // 规避共享内存不足问题 options.addArguments("--disable-dev-shm-usage"); // 若使用无头模式,Chrome 112+推荐使用新参数 options.addArguments("--headless=new"); WebDriver driver = new ChromeDriver(options); try { driver.get("https://example.com"); System.out.println(driver.getTitle()); } finally { driver.quit(); } } }
2. 手动指定用户数据目录
Chrome无法自动生成临时用户目录时会触发该错误,可手动指定一个有读写权限的目录:
options.addArguments("--user-data-dir=/tmp/chrome-temp-profile");
提前创建并授权目录:
mkdir -p /tmp/chrome-temp-profile && chmod 777 /tmp/chrome-temp-profile
3. 检查文件权限
确保ChromeDriver和Chrome二进制文件具备可执行权限:
chmod +x /path/to/your/chromedriver chmod +x /usr/bin/google-chrome # 路径根据实际安装位置调整
4. 明确指定Chrome二进制路径
若Chrome不在系统PATH中,直接在代码中指定路径:
options.setBinary("/usr/bin/google-chrome");
错误日志对应分析
SessionNotCreatedException: Message: session not created: Chrome failed to start: exited abnormally.
(unknown error: DevToolsActivePort file doesn't exist)
该错误本质是Chrome进程启动时无法建立调试端口连接,上述参数组合可覆盖虚拟机环境下的绝大多数场景。
内容的提问来源于stack exchange,提问作者ayrar
相关产品推荐
相关产品推荐

