在 Selenium Grid 中指定 Windows 版本(或特定机器)

2023-11-29

我正在设置一个 Selenium 网格,以便涵盖一个测试矩阵,该矩阵需要全面涵盖以下组合:提供相同服务的三台服务器(Windows Server 2003、2008 和 2012)和十个客户端(XP、Win7、 win8 和 win8.1)将访问三台服务器中的每台服务器以执行几乎相同的测试。三台服务器部分很可能与这个问题无关,但我出于上下文原因将其放入其中。我正在通过 TestNG DataProviders 配置要使用的服务器。

问题是我不仅想测试不同浏览器、浏览器版本和操作系统之间的交互,还想测试所有四个版本的 Windows 之间的交互。

据我所知,DesiredCapability 类只允许我在 XP、VISTA 和 WINDOWS 枚举之间进行指定。我发现了这个问题并且已经得到解答Selenium Grid:功能和平台.WINDOWS7?

然而,出于三个原因,我想发布一个新问题。它涉及旧版本的selenium。我使用的是 2.39.0,解决方案引用版本 2.15。另外,我有四个 Windows 平台,因此我无法使用建议的解决方案,除非我删除了部分测试矩阵。这是不可取的,但并非不可能。最后,虽然我对所使用的技巧有很好的理解,但我对覆盖枚举如何影响我的测试的理解是相当未知的。

我想到的一种可能的解决方法取决于枚举的使用方式。如果它只是使用枚举来搜索所有节点以查找已设置了某些指定功能的机器,我可以将任何剩余的平台标志分配给我的第四个操作系统配置文件。例如,将 XP 标志分配给 winXP,将 WINDOWS 标志分配给 win7,将 VISTA 分配给 win8,最后将 UNIX 标志分配给 win8.1。但如果枚举用于更强烈的目的,我就陷入了众所周知的困境。另外,使用 UNIX 平台标志定义 Windows 盒子似乎是一种糟糕的编程习惯,即使它工作得很好。

我想我真正想要的是告诉网格“在具有此 IP 地址的计算机上运行此测试”,而不是“在匹配这些功能的计算机上运行此测试”。此功能是否已添加到 selenium 中,或者是否有我缺少的解决方法?

Thanks,

Jon


您可以在节点计算机上的节点配置 json 文件中指定 IP:

{
    "capabilities":
    [
        {
            "platform": "WINDOWS",
            "browserName": "firefox",
            "maxInstances": 1,
            "seleniumProtocol": "WebDriver",
            "nodeip": "192.168.0.123"
        }
    ],
    "configuration":
        {
            "proxy":"org.openqa.grid.selenium.proxy.WebDriverRemoteProxy",
            "maxSession":1,
            "url":"http://192.168.0.99:4444/wd/hub"
        }
}

然后请求具体节点:

DesiredCapabilities caps = DesiredCapabilities.firefox();   
caps.setCapability("platform", Platform.WINDOWS);
caps.setCapability("nodeip", "192.168.0.123"); 
RemoteWebDriver driver = new RemoteWebDriver(new URL(hubUrl), caps); 

或者,您也可以使用applicationName能力或Browser Version能够指定您的 IP/自定义值,因为 selenium 网格会对这些值进行简单的字符串匹配。请参阅以下有关使用现有功能来识别特定节点的谷歌小组讨论:

使用applicationName能力

使用Browser Version能力

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

在 Selenium Grid 中指定 Windows 版本(或特定机器) 的相关文章

随机推荐

  • 这个使用 .sort() 打乱数组的 W3Schools 代码是如何工作的?

    这段代码片段来自w3schools JavaScript 部分 我想弄清楚什么 points sort function a b return 0 5 Math random 从下面的代码可以看出 我知道它试图对存储在称为点的数组中的数字执
  • 与 DataSnap 的 IPv6 连接

    在 WWDC 2015 上 Apple 宣布在 iOS 9 中过渡到仅 IPv6 网络服务 从 2016 年 6 月 1 日开始 提交到 App Store 的所有应用程序都必须支持仅 IPv6 网络 我的Delphi IOS应用程序有一个
  • 如何在Python中向输出文件添加新列?

    我用 Python 编写了这段代码 如何添加每行包含数字 1 的新列 qty 这是文件tripo 1 txt 2 txt 5 txt 4 txt 3 txt 6 txt 7 txt 8 txt 这是代码 with open test csv
  • SQL Getdate的精度?

    我正在试验一个程序 该程序可以高速将数据插入 SQL 2005 Server 数据库 在 XP SP3 上 这是为了收集时序数据 以便我可以评估设计的不同方面 我的基本设置包括将数据插入到如下表中 并使用仅指定有效负载字段的 SP crea
  • 错误:#1071 - 指定的密钥太长;最大密钥长度为 1000 字节 - mysql 5.0.91

    我使用的是 mysql 5 0 91 我需要保存 URL 有些很小 有些很长 我想用varchar 2000 但我收到错误 1071 指定的密钥太长 最大密钥长度为 1000 字节 使用 mysql 5 0 91 在我的主机上保存 URL
  • 在 Apache 的 Lucene 中使用默认和自定义停用词(奇怪的输出)

    我正在使用 Apache 的从字符串中删除停用词Lucene 8 6 3 和以下 Java 8 代码 private static final String CONTENTS contents final String text This
  • 基类具有不同初始化参数时的方法解析顺序

    我正在尝试理解 Python 中的 MRO 虽然这里有各种各样的帖子 但我并没有特别得到我想要的 考虑两个类A and B源自BaseClass 每个都有一个 init 采用不同的参数 class BaseClass object def
  • 产品方法重载

    所以我正在CodeHS上解决这个问题 然后我被困了很长时间所以决定在这里问 练习是重载 Product 方法以允许将其他类型的值相乘 两个双打 一个 int 和一个 double 一个 double 和一个 int 三个整数 三双 publ
  • 如何比较两个卷并列出修改的文件?

    我有2个硬盘卷 一个是另一个的备份映像 我想比较这些卷并列出所有修改的文件 以便用户可以选择他 她想要回滚的文件 目前 我正在递归新卷并将每个文件的时间戳与旧卷的文件进行比较 如果它们位于旧卷中 显然这是一种错误的做法 这既耗时又错误 有没
  • 2x 提交按钮来操作不同的 URL

    需要 jquery 的帮助来更改我的表单操作 具体取决于按下提交按钮 我找到了一些 javascript 代码 但它不起作用
  • java.lang.VerifyError:堆栈映射与异常句柄处的堆栈映射不匹配

    当我为 testcontroller 实现方面时 启动 springboot 应用程序时出现以下异常 org springframework beans factory BeanCreationException 错误 创建文件中定义的名为
  • HttpWebRequest 中的 http 参数值的大小是否有限制?

    我正在测试几个不同的公共 RESTful API 每个 API 的 http 参数值名称都不同 但在概念上 所有 API 的工作原理都是相似的 然而 这些公司都没有关联 所以这一定是我这边的事情 在 NET 中 尝试获取 HttpWebRe
  • 观察具有传递项目依赖关系的构建?

    您好 我对 C NET 相当陌生 我有一些关于项目依赖性的问题 第一 我的情况 我有一个解决方案 让我们称之为 MyLibrary 它有几个 dll 输出项目 这些项目相互依赖 作为项目引用 也依赖于一些外部库 dll 引用 我确保该项目引
  • 命令“grunt server”的指南针错误

    我正在运行一个安装了nodeJs ruby yeoman compass等的项目 现在我用命令运行我的项目 gt grunt server or gt grunt server force 但它给了我罗盘的以下错误 E CRM worksp
  • 在 MYSQL 中从文本框中的逗号分隔文本添加新行

    我有一个 PHP MYsql 问题 我试图在每个逗号后插入一个新行 基本上 我想要这个功能 假设我们有一个包含以下文本的文本框 篮球 网球 足球 排球 gt 提交按钮 单击提交按钮后 我想在一个表中的每个单词后插入一个新行 基本上 我希望数
  • 在 Eclipse 上测试时如何传递 -D System 属性?

    我正在 Windows 上的 Eclipse 上进行开发 代码部署在 Unix 上 我正在使用 System getProperty key 获取系统属性值 如何在 Eclipse 中传递它 以便我不必修改代码并且它可以在 Eclipse
  • Delphi IDE 中出现“无法更改 OnShow 或 OnHide 中的可见项”错误

    我在使用 Delphi 2006 IDE 时遇到一个非常奇怪的问题 如果 IDE 最小化 并且 PC 被锁定 我返回电脑 解锁并最大化 IDE 有时会收到错误 无法更改 OnShow 或 OnHide 中的可见项 如果发生这种情况 我必须使
  • 挂钩 ASP.Net Core 的 Razor 页面执行

    我正在尝试加入ExecuteAsync 使用我的自定义视图页面 继承自RazorPage 在里面RazorPage类中有一个抽象方法 public abstract Task ExecuteAsync 解析 cshtml 文件 视图 时 该
  • 在 C++ 和 C# 之间传递向量结构

    我有 C 非托管代码 我想从 C 访问它 所以我遵循了一些教程 为我的项目构建了一个 dll 顺便说一句 只有一个类 现在我想从 C 使用它 我使用 p invoke 如下 我的问题是 是否可以编组我的窗口点 以便我可以将它作为向量传递到我
  • 在 Selenium Grid 中指定 Windows 版本(或特定机器)

    我正在设置一个 Selenium 网格 以便涵盖一个测试矩阵 该矩阵需要全面涵盖以下组合 提供相同服务的三台服务器 Windows Server 2003 2008 和 2012 和十个客户端 XP Win7 win8 和 win8 1 将