如何使用Firefox设置Selenium时解决“NoSuchSessionError”?

How to solve 'NoSuchSessionError' when setting up Selenium with Firefox?

提问人:MeltingDog 提问时间:10/27/2023 更新时间:10/30/2023 访问量:22

问:

我是Selenium(以及一般的自动化测试)的新手,并且正在尝试将Selenium与Node.js一起使用,使用Firefox(104.0)作为浏览器(在MacOS 12.4上)。

在几个在线教程之后,我有:

  1. 设置新的 npm 项目

  2. 安装了 Selenium Webdriver npm 软件包

  3. 从 https://github.com/mozilla/geckodriver/releases 下载了geckodriver.exe

  4. 为 geckodriver 添加了新的 PATH 变量

  5. 设置以下 JS 测试脚本:

    var webdriver = require('selenium-webdriver');

    var driver = 新的 webdriver。生成器()。 withCapabilities(webdriver.Capabilities.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 macOS 硒-webdriver 火狐 geckodriver

评论


答:

0赞 MeltingDog 10/30/2023 #1

事实证明,这是正常工作的。在我的 JS 脚本中,我有这样一行:

driver.quit();

没有任何条件,当然只是在浏览器打开后立即关闭。