Mac系统下Chrome无头模式中Selenium自动化测试框架无法正常运行的问题求助
我用 Selenium + Maven + Java 搭建了一套自动化测试框架,用来测试公司的门户系统。最近碰到了一个非常头疼的问题:只有在 Mac 系统的 Chrome 无头模式下执行测试时会失败,Linux 和 Windows 环境的无头模式都能正常跑通,而且所有系统的非无头模式测试全过,这就很奇怪了。
问题主要集中在下拉选单操作和数据加载/可见性上——哪怕我加了各种等待逻辑,还有waitForElementVisible的判断,还是会出问题。最常见的报错是元素点击被拦截,具体错误信息如下:
java.lang.AssertionError: Element not clickable or not visible org.openqa.selenium.ElementClickInterceptedException: element click intercepted: Element
... is not clickable at point (458, 380). Other element would receive the click:
我的 ChromeOptions 配置如下:
ChromeOptions options = new ChromeOptions(); options.setExperimentalOption("prefs", chromePrefs); options.addArguments("--start-maximized"); options.addArguments("download.default_directory=" + downloadDirPath); options.addArguments("--test-type"); options.addArguments("--ignore-certificate-errors"); options.addArguments("--disable-extensions"); options.addArguments("--disable-infobars"); options.addArguments("--remote-allow-origins=*"); options.addArguments("--disable-popup-blocking"); options.addArguments("--enable-WebGL"); options.addArguments("--ignore-gpu-blocklist"); options.addArguments("--ignore-gpu-blacklist"); options.addArguments("--headless=new"); options.addArguments("--no-sandbox"); options.addArguments("--disable-features=EnableEphemeralApps"); // Added argument options.addArguments("--disable-dev-shm-usage"); options.addArguments("--disable-software-rasterizer"); options.addArguments("--use-webgl=desktop"); options.addArguments("--disable-search-engine-choice-screen"); options.addArguments("--window-size=1920,1080"); options.addArguments("--allow-running-insecure-content"); options.addArguments("--disable-renderer-accessibility"); driver = new ChromeDriver(options); driver.get(url);
目前使用的环境版本:
- Chrome 版本:133.0.6943.127
- Selenium 版本:Maven 最新的 4.28.1
我试过了 ChatGPT 给出的所有修复方案,但都没解决问题。这套测试本来是要在 Jenkins 的 Linux 服务器上夜间以无头模式执行的,现在因为 Mac 本地的问题(虽然 Jenkins 上能跑,但本地调试必须解决),我暂时停了夜间任务,实在是急需找到解决办法!
UPDATE: 经过进一步排查,我发现无头模式的问题仅出现在 Mac OS 上。Linux(Jenkins 日志能看到预期的System.out.print输出)和 Windows(IDEA 中跑无头模式)都正常,Mac 系统的非无头模式测试也全部通过。
备注:内容来源于stack exchange,提问作者MarkMck

