【发布时间】:2022-11-02 22:08:36
【问题描述】:
我想将 EventListener 添加到 RemoteWebDriver 的实例中。这是否有可能,或者是否有另一种方法可以在 selenium 中实现相同的目标(除了可能实现观察者模式并从头开始编写所有代码)。
我曾尝试使用EventFiringDecorator 和WebDriverListener,但decorate(WebDriver driver) 方法返回ByteBuddy 的实例,然后将其转换为(WebDriver) 并返回,因此WebDriver 的返回实例不能投射到RemoteWebDriver。
在创建 RemoteWebDriver 的实例时,我想可选地添加侦听器,例如在以下代码 sn-p 中。
class Foo {
private RemoteWebDriver driver = null;
public RemoteWebDriver initializeDriver() {
//setup of remoteWebDriver
//...
if(eventListenerIsActivated) {
MyEventListener myEventListener = new EventListener(driver);
EventFiringDecorator eventFireDec = new EventFirirngDec(myEventListener);
//not possible, throws ClassCastException!
driver = (RemoteWebDriver) eventFireDec.decorate(driver);
}
return driver;
}
}
class MyEventListener implements WebDriverListener { //... }
【问题讨论】: