Selenium中AdBlock扩展无法正常工作的问题求助
我太懂这种被随机弹窗广告打断测试流程的烦躁了!你已经尝试通过ChromeOptions加载本地的AdBlock.crx扩展,但还是没能挡住广告,给你几个实用的调整建议,你可以挨个试一下:
确认扩展文件的有效性和路径正确性
有可能你本地的AdBlock.crx版本太旧,或者文件本身损坏了,建议去Chrome应用商店下载最新的官方AdBlock扩展,导出成crx文件后再用。另外,相对路径有时候会因为项目运行目录的问题加载失败,换成绝对路径试试:// 替换成你的AdBlock.crx绝对路径 File adblockExtension = new File("D:/TestTools/Extensions/AdBlock.crx"); ChromeOptions opt = new ChromeOptions(); opt.addExtensions(adblockExtension); WebDriver driver = new ChromeDriver(opt);切换到兼容性更好的广告拦截扩展
AdBlock对一些新式的弹窗广告拦截可能不够彻底,你可以换成uBlock Origin试试,它的拦截规则更全面,对自动化测试场景的适配也更好,加载方式和AdBlock完全一样,只需要替换对应的crx文件即可。给Chrome添加内置广告拦截参数,双重保险
除了加载扩展,还可以直接给Chrome启动时加一些内置的广告拦截和弹窗阻止参数,增强拦截效果:ChromeOptions opt = new ChromeOptions(); // 加载扩展 opt.addExtensions(new File("你的扩展路径")); // 添加内置拦截参数 opt.addArguments("--enable-popup-blocking"); opt.addArguments("--disable-notifications"); opt.addArguments("--block-new-web-contents"); opt.addArguments("--enable-ad-filtering"); WebDriver driver = new ChromeDriver(opt);检查扩展是否真的被成功加载
有时候代码看起来没问题,但实际上扩展没被正确加载,你可以在启动浏览器后,通过代码打印已加载的扩展列表,确认AdBlock是否在其中:// 启动driver后执行这段代码 Set<String> loadedExtensions = driver.getCapabilities().getCapability("chrome.extensions", Set.class); System.out.println("当前已加载的扩展ID:" + loadedExtensions);如果输出里没有AdBlock的ID,那就要排查文件权限或者路径问题,比如当前运行程序的用户有没有读取该crx文件的权限。
配置扩展的全局生效权限
有些广告会在iframe、新标签页这类特殊上下文弹出,你可以先在正常Chrome浏览器里配置好AdBlock的权限(比如允许在所有网站、隐身模式下运行),再导出crx文件用于自动化加载;如果你的测试用了隐身窗口,记得在启动参数里加上--incognito。
内容来源于stack exchange

