安装selenium-webdriver 3.6.0后运行代码遇async execute错误求助
解决Selenium-WebDriver 3.6.0在Node.js 7.1.0下的SyntaxError问题
问题根源
你碰到的SyntaxError: Unexpected identifier错误,核心原因是Selenium WebDriver 3.6.0的源码中使用了async/await语法,但你的Node.js版本是V7.1.0——这个版本里async/await还属于实验性特性,默认没有启用稳定支持,所以Node无法识别这个语法,抛出了错误。
解决方案
这里提供两种可行的解决方式,推荐优先选择第一种:
方案1:升级Node.js版本(推荐)
从Node.js 8.0.0开始,async/await正式成为稳定特性,不需要任何额外配置就能直接运行相关代码。你可以升级到Node.js的LTS长期支持版本(比如8.x、10.x或者更高的稳定版本),这样不仅能解决当前的语法错误,还能获得更好的性能、兼容性和安全性。
升级完成后,重新运行你的代码,应该就能正常启动Chrome并访问Google了。
方案2:运行代码时添加实验性特性参数
如果你暂时不想升级Node.js,可以在执行代码时加上--harmony-async-await参数,手动启用async/await的实验性支持:
node --harmony-async-await library.js
⚠️ 注意:实验性特性可能存在潜在的兼容性问题,长期来看还是升级Node版本更稳妥。
额外优化建议
- 清理冗余依赖:你安装了
webdriver和selenium-webdriver两个包,其实后者才是官方的Selenium客户端,前者是另一个独立包,可能会造成冲突。可以卸载冗余的webdriver:
npm uninstall webdriver
- 完善代码变量声明:你的代码中
By和until没有用var/let/const声明,虽然在全局环境下能运行,但容易引发变量污染问题,建议修改为:
var webdriver = require('selenium-webdriver'); var driver = new webdriver.Builder().forBrowser('chrome').build(); var By = webdriver.By; var until = webdriver.until; driver.get('http://www.google.co.in');
内容的提问来源于stack exchange,提问作者Ashish Kumar
相关产品推荐
相关产品推荐

