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:会话外部密钥不可用 的相关文章

随机推荐

  • h2 数据库上的条件唯一索引

    我有一个带有 BIZ ID 列的 SAMPLE TABLE 当列 active 不等于 0 时 该列应该是唯一的 在 Oracle 数据库上 索引如下所示 CREATE UNIQUE INDEX ACTIVE ONLY IDX ON SAM
  • 在android中单击警报对话框中的肯定按钮后关闭活动

    我有一个名为 A 的活动 它显示项目列表 单击更新按钮时 它会显示自定义对话框 活动显示在后面 并选择项目列表 单击自定义对话框内的 订单 按钮时 自定义对话框消失 显示进度对话框 因为订单工作正在进行中 然后进度对话框在订单工作完成后关闭
  • 单个 PHP“退出;”声明阻止 Safari 中的 HTML5 视频

    奇怪的错误 在提供视频文件的 PHP 脚本中 在发送 video mp4 标头并输出 MP4 文件之前 我有一些测试条件 验证令牌 确保文件存在等 如果任何测试失败 fail被赋予一个非假值 测试结束时有这个if陈述 if fail exi
  • 如何在 Objective-C 中发出 API 请求来获取私有 Vimeo 视频?

    我正在开发一个 iOS 应用程序来播放私人 Vimeo 视频 私人视频被赋予隐藏来自 Vimeo 网站的视频的隐私和指定的域 以便这些视频只能在我的网站上购买和播放 我有 Vimeo PRO 帐户 我正在使用 VIMNetworking S
  • 公钥和私钥作为变量 C#

    我正在编写一个函数 其中该函数接收我的公钥作为变量 并且该变量的值是实际的公钥 我需要 Azure 中的两个不同的功能应用程序来加密和解密 密钥必须匹配 但问题是 每次我调用 API 时 公钥都不同 我可以毫无问题地加密 但是当我必须解密时
  • Hogan.js 的国际化是如何配置的?

    我正在寻找使用hogan js在浏览器中创建 html 表单模板 我读到 hogan 支持 i18n 但我找不到其工作原理的示例 你如何将翻译后的文本传递给 hogan 以及你在模板中放置什么标签 我已经看到了 i 和 i18n 看来我很困
  • Ionic:如何覆盖后退按钮功能?

    我需要覆盖两个按钮的后退按钮功能 导航栏左上角的后退图标 硬件后退按钮 例如在 Android 中 但仅针对一种特定视图 而不是全局视图 我怎样才能做到这一点 有可能覆盖两个按钮的后退按钮功能从您的控制器内 这是代码 run this fu
  • 当用户在相邻单元格中输入信息时,自动填充单元格中的日期

    我有一个电子表格 人们可以在其中输入项目更新 然后输入更新日期 正在发生的事情是人们忘记在笔记上注明日期 有没有办法让日期单元格自动填充当前 输入日期 我假设 if 函数可以做到这一点 This 事件宏将把日期放在列中B如果在列中输入值A
  • 如何使用数据工厂创建 Azure 按需 HD Insight Spark 集群

    我正在尝试使用 Azure 数据工厂使用 Hdi 版本 3 5 创建按需 HD Insight Spark 集群 数据工厂拒绝创建并显示错误消息 HdiVersion 不支持 3 5 如果目前无法创建按需 HD Insight Spark
  • 右键单击 jqGrid 时禁用行选择

    在 jqGrid 中 我当前使用以下命令禁用行选择 beforeSelectRow function return false 这对于左键单击效果很好 但是 我注意到它没有触发beforeSelectRow事件处理程序 并且当我右键单击时仍
  • CKeditor保存事件

    我按照本主题中写的步骤进行操作 CKEditor AJAX 保存如果有人按下 AjaxSave 按钮 我尝试触发自定义 saved ckeditor 事件 但我没有成功 ckeditor plugins ajaxsave plugin js
  • 等待 IE 文件下载完成的 VBA 代码

    我正在尝试从网页下载 Excel 文件 到目前为止 我能够打开网页 导航并单击 保存 按钮 但下载后我需要访问该 Excel 文件 但有时下载需要时间 具体取决于文件的大小 有什么方法可以检查窗口并查看下载是否完成 然后才能继续打开下载的文
  • 如何删除 BigQuery 中属于嵌套列的列

    我想删除 BigQuery 表中属于记录或嵌套列的列 我在他们的中找到了这个命令文档 不幸的是 此命令不适用于现有 RECORD 字段内的嵌套列 有什么解决方法吗 例如 如果我有这个架构 我想删除地址字段内的 address2 字段 所以由
  • 拦截 ESC 而不从缓冲区中删除其他按键

    我有一个控制台应用程序 提示用户进行多个输入 我希望用户能够在出现任何取消操作的提示后按转义键 就像是 if Console ReadKey Key ConsoleKey Escape string input Console ReadLi
  • 时间:2019-03-17 标签:c#updatepanelwithtimerpage_load

    我现在正在尝试一些 AJAX 我有一个自定义控件出现在我的母版页上 其中有一个更新面板和一个计时器 计时器启动 面板更新 一切都很顺利 除了我不希望它在每次刷新时执行一些操作之外 似乎每次刷新都会发生整个页面生命周期 我想设置一些变量 并在
  • 指数维护

    什么是索引维护以及如何进行 我需要多久做一次 有什么好处 这与经常修改的事务表有关 所有 DML 操作都将在该表上运行 我赞同乔纳森所说的一切 除了索引维护的频率 好吧 如果您碰巧有一个设计不佳的索引 例如 GUID 键上的聚集索引 您实际
  • 将 CURDATE() 的日期值与完整时间戳字段进行比较

    我有一个函数将时间戳值 YYYY MM DD HH MM SS 放入META VALUE表的列META 我想要做的是比较日期部分 YYYY MM DD 是否META VALUE等于今天 CURDATE 忽略小时 分钟和秒 HH MM SS
  • 尝试访问 Rails 控制台时 git 远程中的多个应用程序

    我有两个 git 分支 staging and production 我将它们部署在 Heroku 上的同一个 Heroku 帐户中 假设我的应用程序名称是app1 heroku app com and app2 heroku app co
  • 如何使用 ggplot2 在 R 中添加可变大小的 y 轴标签而不更改绘图宽度?

    我有一个用 R 中的 ggplot2 制作的图 我想在 y 轴上添加水平文本标签 然而 根据文本的长度 R 会相应地压缩我的绘图以创建固定宽度的图像 但是 无论文本宽度如何 我都需要绘图具有相同的长度并且具有相同的起始位置和停止位置 边距
  • Selenium:会话外部密钥不可用

    每当 Robot Framework 自动化测试 由 Jenkins 作业启动 从 Hub 请求 Chrome 浏览器时 我正在运行的 Selenium Grid Hub 就会显示此错误消息 会话 null externalkey 不可用且