我是 Selenium(以及一般的自动化测试)新手,正在尝试将 Selenium 与 Node.js 结合使用,并使用 Firefox (104.0) 作为浏览器(在 MacOS 12.4 上)。
遵循几个在线教程,我有:
建立一个新的npm项目
安装了 Selenium Webdriver npm 包
从https://github.com/mozilla/geckodriver/releases下载geckodriver.exe
为 geckodriver 添加了新的 PATH 变量
设置以下 JS 测试脚本:
var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder()。 withCapability(webdriver.Capability.firefox())。 构建();
driver.get('http://www.lambdatest.com'); driver.quit();
运行此脚本会打开 Firefox 一会儿,但随后会产生错误:
Selenium Manager binary found at /Users/me/Desktop/automated-testing/node_modules/selenium-webdriver/bin/macos/selenium-manager
Driver path: /Users/me/.cache/selenium/geckodriver/mac-arm64/0.33.0/geckodriver
Browser path: /Applications/Firefox.app/Contents/MacOS/firefox
/Users/me/Desktop/automated-testing/node_modules/selenium-webdriver/lib/error.js:524
let err = new ctor(data.message)
^
NoSuchSessionError: Tried to run command without establishing a connection
at Object.throwDecodedError (/Users/me/Desktop/automated-testing/node_modules/selenium-webdriver/lib/error.js:524:15)
at parseHttpResponse (/Users/me/Desktop/automated-testing/node_modules/selenium-webdriver/lib/http.js:601:13)
at Executor.execute (/Users/me/Desktop/automated-testing/node_modules/selenium-webdriver/lib/http.js:529:28)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async thenableWebDriverProxy.execute (/Users/me/Desktop/automated-testing/node_modules/selenium-webdriver/lib/webdriver.js:745:17) {
remoteStacktrace: ''
}
我尝试清除缓存并移动 geckodriver 文件,但没有效果。我无法找到与此错误相关的任何其他与 Selenium 相关的内容。
有人知道我应该做什么吗?
事实证明这工作正常。在我的 JS 脚本中,我有这样一行:
driver.quit();
没有任何条件,当然,浏览器一打开就关闭了。