link 很好地解释了 selenium 的事件处理:
WebDriver 中的事件机制由两个主要对象组成:
EventFiringWebDriver - 普通 WebDriver API 的封装,但增加了对事件触发的支持。
WebDriverEventListener - 带有 EventFiringWebDriver 实例将执行的预定义事件的接口扳机。
Selenium 中的事件处理实现类图:
第 1 步:创建一个实现 WebDriverEventListener 的类。
public class DefaultWebDriverEventListener implements WebDriverEventListener {
public void beforeNavigateTo(String url, WebDriver driver) {
System.out.println("Driver will navigate to:" + url);
}
...
}
第 2 步:使用您创建的 webdriver 实例初始化事件触发驱动程序
//initalize FireFox webdriver instance
WebDriver driver = new FirefoxDriver();
//initalize event-firing driver using Firefox webdriver instance.
EventFiringWebDriver eventDriver = new EventFiringWebDriver(driver);
第 3 步:注册监听器
//register event listener to even-firing webdriver instance
eventDriver.register(listener);
现在,当 selenium 执行时,您实现的类中定义的所有事件都将被执行。例如,对异常进行截图等。
第四步:如果你想在 selenium 时停止触发事件,你也可以取消注册监听器
eventDriver.unregister(listener);