如何为硒网格设置自定义浏览器版本?

How to setup custom browser versions for selenium grid?

设置

我们有一个 selenium 网格,其中除一个节点外所有节点都完全相同。所有相同的节点运行 windows 10,有基本的chrome,IE,边缘浏览器,和运行 MST。 运行s IE、chrome 和 edge 除外,但它们被设置为看起来像在英国,并且 运行s GMT+0 一年中的大部分时间(夏令时除外)当然然后它 运行s BST)。这会更改日期格式等,用于测试日期格式是否正确以及我们系统上的文档是否反映了其所在时区的准确时间。英国节点上的浏览器都在其 node_XXXX.json selenium 网格文件中声明了自定义浏览器版本。

问题

前一段时间我们失去了中心服务器,重建后我们无法再让 IE、EDGE 和 Firefox 浏览器在英国服务器上运行。我们曾经为英国浏览器使用自定义浏览器版本,例如:而不是 "version":11 而是 "version":"11.eu" 表示我们想要 运行特殊服务器。 Chrome 适用于此模型。但是,IE 报错:

OpenQA.Selenium.WebDriverException : Error forwarding the new session cannot find : Capabilities {browserName: internet explorer, browserVersion: 11.eu, platformName: windows, se:ieOptions: {enablePersistentHover: true, ie.ensureCleanSession: true, nativeEvents: true}}

尝试过的解决方案

我们已经尝试更改版本号(以前是 9.eu,这是我们 运行ning IE9 时遗留的)。我们也再次尝试 "updating" IE 到版本 11。没有任何工作或允许驱动程序连接。

问题

我们如何让我们的英国 IE 浏览器再次在 selenium 网格上工作?我们有许多测试失败只是因为它们无法连接到驱动程序实例。任何帮助将不胜感激,谢谢!

参考

作为参考,这是我们的 node_XXXX.json 文件:

{
  "capabilities": [
    {
      "seleniumProtocol": "WebDriver",
      "browserName": "firefox",
      "maxInstances": 1,
      "version": "17.eu",
      "platform": "WINDOWS"
    },


   {
      "seleniumProtocol": "WebDriver",
      "browserName": "internet explorer",
      "maxInstances": 1,
      "version": "11.eu",
      "platform": "windows"
    },
    {


"seleniumProtocol": "WebDriver",
      "browserName": "chrome",
      "maxInstances": 1,
      "version": "77.eu",
      "platform": "WINDOWS"
    }
  ],
  "loadedFromFile": 

"node_5555.json",
  "proxy": "com.groupon.seleniumgridextras.grid.proxies.SetupTeardownProxy",
  "servlets": [],
  "maxSession": 3,
  "port": 5555,
  "register": true,


"unregisterIfStillDownAfter": 10000,
  "hubPort": 4444,
  "hubHost": "test-slum01.ndtest.local",
  "registerCycle": 5000,
  "nodeStatusCheckTimeout": 10000,
  "custom": {},


"downPollingLimit": 0
}

这是调用远程网络驱动程序的代码:

case "iehta9UK":
    var ieUkOptions = new InternetExplorerOptions();
    ieUkOptions.EnsureCleanSession = true;
    ieUkOptions.BrowserVersion = "11.eu";
    return IS_REMOTE_RUN ? CreateRemoteWebDriver(ieUkOptions) : new InternetExplorerDriver(ieUkOptions);

这是可以正常工作的严格的美国 IE 代码:

case "IE":
case "ie":
case "InternetExplorer":
case "iehta11":
    var ieOptions = new InternetExplorerOptions();
    ieOptions.EnsureCleanSession = true;
    return IS_REMOTE_RUN ? CreateRemoteWebDriver(ieOptions) : new InternetExplorerDriver(ieOptions);

啊哈!我们想通了。我们已经对上面显示的 node_XXXX.json 文件进行了更改,但没有重新启动 selenium 网格服务。

确保在更改 json 文件后重新启动服务器以使它们生效。