我正在学习WebDriver侦听器。要侦听并采取相应的措施,我们首先必须创建一个WebDriver实例,然后将其传递给EventFiringWebDriver实例。
所以代码会像
WebDriver wdriver = new FirefoxDriver();
EventFiringWebDriver driver = new EventFiringWebDriver(wdriver);
我已经知道EventFiringWebDriver类是WebDriver的包装,它添加了侦听事件并调用WebDriverEventListener的重写方法的功能。
所以现在的代码就像
OverrideClass oc = new OverrideClass();
driver.register(oc);
从现在开始,我们像以前使用FirefoxDriver一样进行编码。 例如,打开一个网址
driver.get("https://www.facebook.com");
找到一个元素
driver.findElement(By.id("email"));
,依此类推。
因此,我可以推断FirefoxDriver和EventFiringWebDriver都具有相同的方法,但实现方式不同。
例如,使用findElement。 在FirefoxDriver中,它实现为“查找元素并返回WebElement类型的对象”。
在EventFiringWebDriver中,其实现为“查找元素。如果找不到该元素,则调用被覆盖的方法' onException ”。如果找到,则返回WebElement类型的对象。” / p>
如果我错了,请纠正我。
现在我的疑问是,如果我们要在EventFiringWebDriver中使用方法,为什么不只创建它的实例并使用它的方法呢?
EventFiringWebDriver driver = new EventFiringWebDriver();
driver.get("https://www.facebook.com");
driver.findElement(By.id("email"));
我没有提出任何建议。我只想知道先包装WebDriver对象然后使用EventFiringWebDriver对象的逻辑。
我知道
EventFiringWebDriver driver = new EventFiringWebDriver();
是不可能的,因为没有这样的构造函数。
我只想了解先包装WebDriver对象的逻辑,然后再使用EventFiringWebDriver对象进行脚本编写。
谢谢。
答案 0 :(得分:0)
很好的问题,我也在研究同一主题,并且希望分享我的观点。希望我能为您提供直接的答案或进一步调试的线索。
点:
NetworkPolicy
如您所说,您不能使用这种方式,因为它没有任何实现或构造函数
EventFiringWebDriver中的Webdriver方法的实现仍使用ChromeDriver或Firefox的Wrapper对象来执行findelements或getcurrenturl等。此EventFiringWebDriver的不同之处在于,它在执行操作之前和之后使用AbstractWebDriverListner日志的Implementation类。
示例:
EventFiringWebDriver driver = new EventFiringWebDriver();
driver.get("https://www.facebook.com");
driver.findElement(By.id("email"));