如何在传递到节点之前替换 Selenium 网格中的能力值

Posted

技术标签:

【中文标题】如何在传递到节点之前替换 Selenium 网格中的能力值【英文标题】:How to replace a capability-value in the Selenium Grid before passing to a node 【发布时间】:2015-12-14 00:40:27 【问题描述】:

他们是改变 Selenium 网格中 Capabilities 值的一种方式吗?

我已经在 java 类中扩展 org.openqa.grid.internal.utils.DefaultCapabilityMatcher 来验证一些值。在传递给节点之前还需要一种替换它们的方法吗?

【问题讨论】:

即使存在这种方式,您也会将 Chrome v30 分配给请求 Chrome v26 的客户端。这不违反合同吗? 嗯,这不完全是用例。实际上,用户会要求提供“浏览器代码”,例如给我 b2831。现在集线器应该用 Google Chrome v31 替换 b2831 在这种情况下,您将有一个映射,对吧? @Shubhasmit 是的,我将有一个映射,但仅限于存在 SeleniumGrid 的机器上。 集线器不能靠它自己做到这一点,你必须建立一个逻辑来做到这一点。 【参考方案1】:

您可以构建您的自定义代理来执行此操作。 在自定义代理中,您需要扩展以下类: org.openqa.grid.selenium.proxy.DefaultRemoteProxy 并覆盖具有 TestSession 对象作为参数的 beforeSession 函数,您可以从中获取功能。 注册节点时,您需要指定新代理并使用新的自定义代理启动集线器。

【讨论】:

以上是关于如何在传递到节点之前替换 Selenium 网格中的能力值的主要内容,如果未能解决你的问题,请参考以下文章

Selenium 网格执行 - 如何使用 sendkeys 将多个文件一起(一次)上传到网页

使用 Robot 框架实现 Selenium 网格

selenium更改button值

如何在Selenium中使用sendKeys()方法传递一个arraylist

更换蒙皮网格上的材质

如何通过传递对象使用 [ngstyle] 将网格行和网格列动态传递到角度 div 选项卡