Selenium:会话外部密钥不可用

2023-12-09

每当 Robot Framework 自动化测试(由 Jenkins 作业启动)从 Hub 请求 Chrome 浏览器时,我正在运行的 Selenium Grid Hub 就会显示此错误消息:

会话 [(null externalkey)] 不可用且不在最后一个会话中 1000 个终止的会话。

我花了几个小时搜索并尝试建议的解决方案,但没有成功。

将 Linux 服务器作为 Selenium Grid Hub 运行,将 Windows 服务器作为 Selenium Grid Node 运行。已尝试使用版本 3.0.1、3.5.3、3.13.0 和 3.141.59 的每个节点selenium-server-standalone-<version>.jar文件。第三台服务器运行 Jenkins。

集线器似乎配置正确,因为它工作正常:

http://10.1.10.231:4444/grid/console

我还在命令行中运行了 jar 文件-debug最后但没有显示更多信息。也尝试过-Dselenium.LOGGER.level=WARNING在命令行的“java 端”,没有显示比使用更多的信息-debug.

我们有另一组具有相同配置的服务器,运行得很好。

任何人都知道这条消息表明什么?


实质内容如下。

网格中心:

java -jar -Xms1024m -Xmx2048m selenium-server-standalone-3.141.59.jar -role hub -hubConfig ./hub-config.json

hub-config.json:

{
  "port": 4444,
  "newSessionWaitTimeout": -1,
  "servlets" : [],
  "withoutServlets": [],
  "custom": {},
  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
  "throwOnCapabilityNotPresent": true,
  "cleanUpCycle": 5000,
  "role": "hub",
  "debug": false,
  "browserTimeout": 360,
  "timeout": 1800
}

网格节点:

SET CHROMEDRIVER=.\bin\chromedriver_win32-v2.37\chromedriver.exe
SET IEDRIVER=.\bin\IEDriverServer.exe
SET FFDRIVER=.\bin\geckodriver-v0.11.1-win32\geckodriver.exe

START "SeleniumNode" java -Xms1024m -Xmx2048m ^
    -Dwebdriver.gecko.driver=%FFDRIVER% ^
    -Dwebdriver.ie.driver=%IEDRIVER% ^
    -Dwebdriver.chrome.driver=%CHROMEDRIVER% -Dwebdriver.chrome.args="--disable-extensions" ^
    -jar .\bin\selenium-server-standalone-3.141.59.jar -role node -nodeConfig .\node-config.json

节点配置.json:

{
  "capabilities":
  [
    {
      "browserName": "firefox",
      "maxInstances": 5,
      "platform": "WINDOWS",
      "seleniumProtocol": "WebDriver"
    },
    {
      "browserName": "chrome",
      "maxInstances": 5,
      "platform": "WINDOWS",
      "seleniumProtocol": "WebDriver"
    },
    {
      "browserName": "internet explorer",
      "maxInstances": 5,
      "platform": "WINDOWS",
      "seleniumProtocol": "WebDriver"
    }
  ],
  "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
  "maxSession": 5,
  "port": 5555,
  "register": true,
  "registerCycle": 5000,
  "hub": "http://10.1.10.231:4444",
  "nodeStatusCheckTimeout": 5000,
  "nodePolling": 5000,
  "role": "node",
  "unregisterIfStillDownAfter": 60000,
  "downPollingLimit": 2,
  "debug": false,
  "servlets" : [],
  "withoutServlets": [],
  "custom": {},
  "browserTimeout": 0,
  "timeout": 1800,
  "cleanUpCycle": 2000
}

想通了这一点!希望它能帮助其他报告此错误消息但未收到解决方案的人。

与此类问题最常见的情况一样,尤其是当损坏的实例旁边有一个已知的工作设置时,这是一个(令人尴尬的)愚蠢的配置问题。机器人测试指向此 URL 来获取浏览器:

http://10.1.10.75:4444/wd/hub/static/resource/hub.html

它应该指向这条路径:

http://10.1.10.75:4444/wd/hub

至少这是一个简单的修复。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium:会话外部密钥不可用 的相关文章