Selenium Node/Hub 身份验证
Selenium Node/Hub Authentication
我正在尝试通过实施自定义代理来阻止 selenium hub 注册节点。我有一些适用于自定义代理的代码。但是,客户端可以通过不在其配置中指定自定义代理来解决这个问题。有没有一种方法可以强制节点使用自定义代理而不使用 DefaultRemoteProxy。
或者我可以在 Selenium 项目中实现一些东西来使用 selenium hub 验证节点吗?
没有优雅的方法可以做到这一点。
这是一个肮脏的技巧,您可以使用它来完成此操作。
- 创建一个新的标记界面(我们称之为
Registrable
)
- 创建一个新的 class,其内容与
org.openqa.grid.selenium.proxy.DefaultRemoteProxy
的内容重复(我喜欢将此方法称为 CLASSPATH 重写,但我确信有一个更优雅的名称)这样这个新的class 也称为 DefaultRemoteProxy
,它位于同一个包 org.openqa.grid.selenium.proxy
中,但在您的测试项目中。
- 现在在构造函数中添加一个编辑检查,如下所示。
- 现在从这个项目中创建一个 uber 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
接口。
这对你有用吗?
我正在尝试通过实施自定义代理来阻止 selenium hub 注册节点。我有一些适用于自定义代理的代码。但是,客户端可以通过不在其配置中指定自定义代理来解决这个问题。有没有一种方法可以强制节点使用自定义代理而不使用 DefaultRemoteProxy。
或者我可以在 Selenium 项目中实现一些东西来使用 selenium hub 验证节点吗?
没有优雅的方法可以做到这一点。 这是一个肮脏的技巧,您可以使用它来完成此操作。
- 创建一个新的标记界面(我们称之为
Registrable
) - 创建一个新的 class,其内容与
org.openqa.grid.selenium.proxy.DefaultRemoteProxy
的内容重复(我喜欢将此方法称为 CLASSPATH 重写,但我确信有一个更优雅的名称)这样这个新的class 也称为DefaultRemoteProxy
,它位于同一个包org.openqa.grid.selenium.proxy
中,但在您的测试项目中。 - 现在在构造函数中添加一个编辑检查,如下所示。
- 现在从这个项目中创建一个 uber 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
接口。
这对你有用吗?