Node.js(OS X)无法导入Chrome Options配置Headless Selenium问题
解决Selenium在OS X Node.js环境下Headless模式的导入问题
问题原因
在ES模块模式下(package.json中设置了"type": "module"),Node.js要求导入本地文件模块必须指定完整文件后缀,你之前的import chrome from 'selenium-webdriver/chrome'缺少.js后缀,导致模块找不到。
正确配置步骤
调整导入语句
直接导入Chrome的Options类,带上完整的.js后缀:import { Builder, Browser, By, Key, until } from 'selenium-webdriver'; import { Options } from 'selenium-webdriver/chrome.js';配置Headless模式参数
创建Options实例并添加Headless启动参数,建议使用新版Chrome的--headless=new(兼容性更好,功能更全):// 初始化Chrome配置 const chromeOptions = new Options(); chromeOptions.addArguments('--headless=new'); // 可选:添加其他常用参数 chromeOptions.addArguments('--window-size=1920,1080'); // 设置窗口大小 // 构建Driver并应用配置 let driver = await new Builder() .forBrowser(Browser.CHROME) .setChromeOptions(chromeOptions) .build(); await driver.get(url);额外检查
- 确保Chrome浏览器版本与ChromeDriver版本匹配,版本不兼容可能导致运行失败
- 如果使用CommonJS模块(未设置
"type": "module"),则导入语句改为:const { Builder, Browser } = require('selenium-webdriver'); const { Options } = require('selenium-webdriver/chrome');
内容的提问来源于stack exchange,提问作者dsjfhdjshfjkdshjf
相关产品推荐
相关产品推荐

