使用Selenium 3.11.0启动Chrome时出现Invalid port错误,求助
解决ChromeDriver启动超时与端口无效问题
首先看你的环境配置:Selenium 3.11.0、ChromeDriver 2.36、Chrome 66.0.3359.139,这里第一个核心问题是ChromeDriver和Chrome版本不匹配——ChromeDriver 2.36仅支持Chrome 63-65版本,而你的Chrome是66,版本不兼容会直接导致驱动启动失败,出现端口无效、超时这类错误。
接下来给你分步解决的方案:
1. 修复版本兼容性问题
- 卸载当前的ChromeDriver 2.36,下载对应Chrome 66的ChromeDriver版本:ChromeDriver 2.38(这个版本专门支持Chrome 65-67)
- 替换代码里的ChromeDriver路径为新版本的exe文件路径
2. 排查其他可能的启动障碍
如果版本匹配后还是有问题,检查以下几点:
- 路径格式问题:Windows路径里的反斜杠要转义,或者用正斜杠更简洁,比如把
"C:\\Users\\surya\\Downloads\\Compressed\\chromedriver_win32_2\\chromedriver.exe"改成"C:/Users/surya/Downloads/Compressed/chromedriver_win32_2/chromedriver.exe",避免转义错误 - 端口占用:ChromeDriver默认会占用本地端口,可能被其他程序占用,可以手动指定端口启动:
ChromeOptions options = new ChromeOptions(); options.addArguments("--remote-debugging-port=9222"); // 指定一个未被占用的端口 WebDriver driver = new ChromeDriver(options); - 权限问题:确保chromedriver.exe所在文件夹有读写权限,右键exe文件选择“以管理员身份运行”试试,或者给当前用户赋予该文件的完全控制权限
- 防火墙/杀毒软件拦截:临时关闭防火墙或杀毒软件,排查是否是它们阻止了ChromeDriver启动Chrome
3. 优化后的完整代码示例
(假设已经替换了正确的ChromeDriver路径)
import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; public class WebDriverBasics { public static void main(String[] args) { // 用正斜杠简化路径格式 System.setProperty("webdriver.chrome.driver", "C:/Users/surya/Downloads/Compressed/chromedriver_win32_2/chromedriver.exe"); // 可选:指定端口避免冲突 ChromeOptions options = new ChromeOptions(); options.addArguments("--remote-debugging-port=9222"); WebDriver driver = new ChromeDriver(options); driver.get("http://www.facebook.com"); driver.manage().window().maximize(); } }
额外提示
每次更新Chrome浏览器后,一定要对应更新ChromeDriver,保持版本匹配是避免这类启动问题的关键。你可以通过Chrome的「帮助->关于Google Chrome」查看当前版本,再找到对应兼容的ChromeDriver版本即可。
内容的提问来源于stack exchange,提问作者Suryaneel Varshney




