You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Selenium时Google Chrome Native Messaging失效求助

解决Selenium启动Chrome时Native Messaging Host找不到的问题

核心原因

Selenium默认会创建临时用户数据目录,不会读取手动浏览时使用的~/.config/google-chrome-for-testing配置,导致Native Messaging主机配置无法被加载。

解决方法

1. 指定用户数据目录

让Selenium使用你已配置好Native Messaging的用户目录,修改Java代码:

ChromeOptions cOpt = new ChromeOptions();
cOpt.setBinary("/path/to/google-chrome-for-testing");
// 指定已配置Native Messaging的用户数据目录
cOpt.addArguments("--user-data-dir=~/.config/google-chrome-for-testing");
File extension = new File("/path/to/extension.crx");
cOpt.addExtensions(Arrays.asList(extension));
return new ChromeDriver(cOpt);

注意:如果担心影响日常浏览的配置,可以复制一份该目录到新路径,再指定给Selenium使用。

2. 检查权限设置

确保Native Messaging相关文件权限正确:

  • 给主机可执行文件添加执行权限:
    chmod +x /path/to/your-native-messaging-executable
    
  • 给配置.json文件设置可读权限:
    chmod 644 ~/.config/google-chrome-for-testing/NativeMessagingHosts/your-host-config.json
    

3. 验证配置文件的绝对路径

检查Native Messaging主机的.json配置文件,path字段必须使用绝对路径,不能用相对路径:

{
  "name": "com.your.host.name",
  "description": "Your Native Messaging Host",
  "path": "/usr/local/bin/your-native-host", // 必须是绝对路径
  "type": "stdio",
  "allowed_origins": [
    "chrome-extension://your-extension-id/"
  ]
}

4. 直接传递Native Messaging主机配置(备选)

如果不想指定用户数据目录,可以通过Chrome参数直接传递主机配置:

ChromeOptions cOpt = new ChromeOptions();
cOpt.setBinary("/path/to/google-chrome-for-testing");
// 格式:--native-messaging-hosts=主机名称=配置文件绝对路径
cOpt.addArguments("--native-messaging-hosts=com.your.host.name=/path/to/your-host-config.json");
File extension = new File("/path/to/extension.crx");
cOpt.addExtensions(Arrays.asList(extension));
return new ChromeDriver(cOpt);

内容的提问来源于stack exchange,提问作者mardro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 18:43:14