Java Selenium节点/集线器身份验证

Java Selenium节点/集线器身份验证,java,selenium,automated-tests,selenium-grid,Java,Selenium,Automated Tests,Selenium Grid,我试图通过实现自定义代理来阻止selenium hub注册节点。我有一些用于自定义代理的代码。但是,客户机可以通过在其配置中不指定自定义代理来解决此问题。是否有一种方法可以强制节点使用自定义代理而不使用DefaultRemoteProxy 或者,我可以在Selenium项目中实现一些东西来使用Selenium hub对节点进行身份验证吗?没有优雅的方法可以做到这一点。 这里有一个肮脏的黑客,你可以用它来完成这件事 创建一个新的标记接口,并将其称为可注册 创建一个新类,其内容与org.openqa

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


或者,我可以在Selenium项目中实现一些东西来使用Selenium hub对节点进行身份验证吗?

没有优雅的方法可以做到这一点。 这里有一个肮脏的黑客,你可以用它来完成这件事

创建一个新的标记接口,并将其称为可注册 创建一个新类,其内容与org.openqa.grid.selenium.proxy.DefaultRemoteProxy的内容重复。我喜欢将此方法称为类路径重写,但我确信有一个更优雅的名称,这样这个新类也被称为DefaultRemoteProxy,它位于同一个包org.openqa.grid.selenium.proxy中,但在你的测试项目。 现在在构造函数内部添加一个编辑检查,如下所示。 现在,从这个项目中创建一个uber jar,这样它就可以用来剥离Hub。 下面是可注册的外观

可注册的公共接口{}

以下是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;
}
现在,您可以调整自定义代理,使其实现可注册接口。因此,任何试图使用DefaultRemoteProxy注册其节点的人都会不断失败,因为DefaultRemoteProxy没有实现可注册接口


这对您有用吗?

谢谢您的解决方案。这能满足我的需要。但是,我确实将instanceof registable更改为instanceof CustomProxy,因此您必须使用CustomProxy,而不是另一个也实现可注册接口的代理。