0

我将提供一个 Selenium 网格,并希望强制我们的开发人员不再使用 RC API。据我所知,RC 已被弃用,在客户端您需要导入旧代码:https ://seleniumhq.github.io/selenium/docs/api/java/deprecated-list.html

但是如果开发人员使用旧的 RC 调用呢?我发现无法在集线器上禁用对 RC 的支持。我在 Selenium 3.4.0 上进行了尝试

4

1 回答 1

1

没有直接的方法可以做到这一点。但这里有一个关于如何做到这一点的技巧。

  • 在您的测试项目中,创建一个新包org.openqa.grid.selenium.proxy
  • 现在将类DefaultRemoteProxy复制到您创建的这个包中(这将导致 Java 现在开始使用您的版本DefaultRemoteProxy而不是 Selenium 代码库中可用的版本)
  • 现在在复制版本中将DefaultRemoteProxy其构造函数更改为如下所示。
  • 使用以下机制之一创建用于启动 Hub 的工件。
    • 从您的测试项目中创建一个 uber jar,以便它可以用作您的 Selenium 独立 jar(或)
    • 从您的项目中创建一个 jar,将其放入 Selenium 独立 jar 的 CLASSPATH 中,然后使用java -cp(随意选择适合您的选项)
  • 使用上面创建的工件,启动集线器。

在此之后,您应该能够阻止人们将他们的节点注册到您的集线器,其中协议是 Selenium RC。

public DefaultRemoteProxy(RegistrationRequest request, Registry registry) {
    super(request, registry);
    for (TestSlot slot : getTestSlots()) {
        if (slot.getProtocol() == SeleniumProtocol.Selenium) {
            throw new IllegalStateException("Selenium RC Protocol is NOT supported.");
        }
    }

    pollingInterval = config.nodePolling != null ? config.nodePolling : DEFAULT_POLLING_INTERVAL;
    unregisterDelay = config.unregisterIfStillDownAfter != null ? config.unregisterIfStillDownAfter : DEFAULT_UNREGISTER_DELAY;
    downPollingLimit = config.downPollingLimit != null ? config.downPollingLimit : DEFAULT_DOWN_POLLING_LIMIT;
}

这应该可以帮助您实现您所追求的目标。

另一方面,您需要确保不断监控 Selenium 代码库中org.openqa.grid.selenium.proxy.DefaultRemoteProxy的内容并不断更新本地版本,否则您可能会遇到以下情况不同步。

于 2017-05-29T08:19:47.897 回答