You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用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

火山引擎 最新活动