Mac系统下Selenium WebDriver启动浏览器无法自动显示的解决咨询
我之前在Mac上用Selenium时也踩过这个坑——浏览器后台跑操作但不弹出窗口,得手动点才能看执行过程,大概率是你不小心启用了无头模式,或者启动参数里默认加了隐藏窗口的配置。下面分Chrome和Firefox给你具体的解决办法:
Chrome浏览器的解决方法
核心就是移除所有和无头模式相关的启动参数,同时可以加一些确保窗口正常显示的配置:
- 检查你的代码里有没有
ChromeOptions.addArguments("--headless")或者--headless=new(Selenium 4.x+的新无头模式),把这些参数删掉 - 可选添加
--start-maximized参数,让浏览器启动时直接最大化,避免窗口最小化在 dock 里被忽略 - 如果是M系列芯片的Mac,确保你用的ChromeDriver是arm64架构的(和Chrome浏览器版本匹配)
修正后的Chrome示例代码:
package trial; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; public class BrowserDemo { public static void main(String[] args) { ChromeOptions options = new ChromeOptions(); // 移除无头模式参数(如果之前加了的话) // options.addArguments("--headless=new"); // 这行必须删掉! options.addArguments("--start-maximized"); // 让窗口最大化显示 options.addArguments("--disable-extensions"); // 禁用扩展避免干扰 WebDriver driver = new ChromeDriver(options); driver.get("https://www.google.com"); // 后续执行你的操作... } }
Firefox浏览器的解决方法
和Chrome类似,重点是移除无头模式的配置:
- 检查代码里有没有
FirefoxOptions.addArguments("--headless"),或者旧版本的options.setHeadless(true),把这些配置删掉 - 同样可以添加
--start-maximized参数确保窗口正常显示 - 确认geckodriver的版本和Firefox浏览器版本匹配,且对应M系列芯片的arm64架构(如果是M芯片Mac)
修正后的Firefox示例代码:
package trial; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxOptions; public class BrowserDemo { public static void main(String[] args) { FirefoxOptions options = new FirefoxOptions(); // 移除无头模式配置(如果之前加了的话) // options.addArguments("--headless"); // 这行必须删掉! // options.setHeadless(true); // 旧版本的无头配置也要删掉 WebDriver driver = new FirefoxDriver(options); driver.get("https://www.google.com"); // 后续执行你的操作... } }
额外排查点
如果上面的方法还是不行,可以检查:
- Mac系统的「安全性与隐私」设置,确认是否允许Chrome/Firefox被自动化控制(如果弹出过授权提示,记得允许)
- 有没有用测试框架(比如TestNG、JUnit)的全局配置文件,里面可能默认开启了无头模式,需要修改全局配置
内容的提问来源于stack exchange,提问作者Rufus Benny
相关产品推荐
相关产品推荐

