Selenium节点/集线器身份验证

时间:2017-05-15 18:32:35

标签: java selenium automated-tests selenium-grid

我试图通过实现自定义代理来阻止注册节点的selenium hub。我有一些适用于自定义代理的代码。但是,客户端可以通过不在其配置中指定自定义代理来解决此问题。有没有办法可以强制节点使用自定义代理,而不是使用DefaultRemoteProxy。

或者我是否可以在Selenium项目中实现一些使用selenium hub验证节点的内容?

1 个答案:

答案 0 :(得分:1)

没有优雅的方式这样做。 这是一个肮脏的黑客,使用它可以完成这件事。

  • 创建新的标记界面(我们将其称为Registrable
  • 创建一个新类,其内容复制org.openqa.grid.selenium.proxy.DefaultRemoteProxy的内容(我喜欢将此方法称为CLASSPATH覆盖,但我确定这是一个更优雅的名称),这样新的类也是名为DefaultRemoteProxy,它位于同一个包org.openqa.grid.selenium.proxy中,但位于您的测试项目中。
  • 现在在构造函数中添加一个编辑检查,如下所示。
  • 现在从这个项目中创建一个超级jar,以便它可以用来剥离Hub。

以下是Registrable的样子

public interface Registrable {}

以下是DefaultRemoteProxy的修改构造函数的外观:

public DefaultRemoteProxy(RegistrationRequest request, Registry registry) {
 super(request, registry);
 if (!(this instanceof Registrable)) {
  throw new UnsupportedOperationException("Cannot proceed further");
 }
 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;
}

现在,您可以调整自定义代理,使其实现Registrable接口。因此,任何尝试使用DefaultRemoteProxy注册其节点的人都会不断失败,因为DefaultRemoteProxy没有实现Registrable接口。

这对你有用吗?