如何在传递到节点之前替换 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 将多个文件一起(一次)上传到网页