You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium 4中EventFiringWebDriver已弃用,求替代方案及代码修改方法

Selenium 4 中 EventFiringWebDriver 的替代方案及代码修改指南

替代方案说明

Selenium 4 弃用了EventFiringWebDriver和WebDriverEventListener,官方推荐使用EventFiringDecorator类配合WebDriverListener接口实现驱动事件监听。WebDriverListener是基于默认方法的接口,你只需重写需要监听的事件方法,无需实现所有抽象方法,灵活性更强。

具体修改步骤

1. 调整自定义监听器类(DriverUpdate)

原DriverUpdate继承的WebDriverEventListener已弃用,需改为实现WebDriverListener接口。示例代码如下:

package listener;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.events.WebDriverListener;

public class DriverUpdate implements WebDriverListener {
    // 重写需要监听的事件,比如页面跳转完成后的逻辑
    @Override
    public void afterNavigateTo(String url, WebDriver driver) {
        System.out.println("页面加载完成,当前URL:" + url);
    }

    // 根据业务需求,可添加其他事件监听方法,如beforeClickOn、afterFindElement等
}

2. 修改测试类代码

移除EventFiringWebDriver的使用,改用EventFiringDecorator包装原WebDriver实例,注册监听器后使用包装后的驱动执行操作(必须用包装后的驱动,监听器才会生效)。修改后的测试类代码:

package testcases;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.events.EventFiringDecorator;
import org.openqa.selenium.support.events.WebDriverListener;
import org.testng.annotations.Test;

import listener.DriverUpdate;

public class TC_001 {
    
    @Test
    public void tc001() {
        // Selenium 4.6+ 支持自动驱动管理,可移除手动设置驱动路径的代码
        // System.setProperty("webdriver.chrome.driver", "./Driver/chromedriver");
        
        WebDriver originalDriver = new ChromeDriver();
        
        // 创建监听器实例
        WebDriverListener listener = new DriverUpdate();
        
        // 用EventFiringDecorator包装原驱动并注册监听器
        WebDriver driver = new EventFiringDecorator(listener).decorate(originalDriver);
        
        // 使用包装后的驱动执行操作,触发监听器事件
        driver.navigate().to("http://www.theTestingWorld.com");
        
        // 后续所有操作都使用包装后的driver对象
        driver.quit();
    }
}

额外注意事项

  • Selenium 4.6及以上版本内置自动驱动管理机制,无需手动调用System.setProperty指定驱动路径,可直接删除该行代码。
  • 务必使用EventFiringDecorator包装后的WebDriver实例执行操作,否则监听器不会触发任何事件。

内容的提问来源于stack exchange,提问作者Immy110

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 10:53:28