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

如何强制Chrome后台启动?Ubuntu下Selenium GUI测试解决方案

我之前在Ubuntu 16.04跑Selenium测试时也碰到过这个烦人的焦点问题,给你几个亲测有效的解决方案,不用改测试逻辑也能搞定:

方案1:给Chrome加启动参数,把窗口移到屏幕外

这是最简单的方法,不需要额外装工具,只需要在Selenium的ChromeOptions里加个位置参数,把Chrome窗口移到显示器可见范围之外,既不影响测试运行,也不会抢你的操作焦点。

Java代码示例:

ChromeOptions options = new ChromeOptions();
// 把窗口移到屏幕左上角以外的位置,完全看不到
options.addArguments("--window-position=-32000,-32000");
// 如果你需要确保窗口不会意外弹出,还可以加上--disable-popup-blocking(可选)
// options.addArguments("--disable-popup-blocking");
WebDriver driver = new ChromeDriver(options);

原理是Ubuntu的屏幕坐标以左上角为原点,负数坐标会让窗口超出显示范围,Selenium依然能正常控制这个窗口,但你完全看不到它,自然不会被抢焦点。

方案2:用Ubuntu窗口管理工具强制Chrome后台运行

如果不想改代码,可以用wmctrl这个窗口控制工具,自动把Chrome窗口最小化或隐藏:

  1. 先安装wmctrl:
sudo apt-get install wmctrl
  1. 写个简单的Shell脚本(比如命名为chrome-background.sh):
#!/bin/bash
# 等待Chrome窗口加载完成
sleep 1
# 找到Chrome窗口并隐藏,找不到就尝试关闭(不过你的测试会自动关闭,所以主要是隐藏)
wmctrl -r "Google Chrome" -b add,hidden || wmctrl -c "Google Chrome"
  1. 给脚本加执行权限:
chmod +x /path/to/chrome-background.sh
  1. 在Selenium启动ChromeDriver之后,调用这个脚本:
// 在初始化driver之后执行脚本
Runtime.getRuntime().exec("/path/to/chrome-background.sh");

如果你连代码都不想改,还可以用Compiz的窗口规则:

  • 安装Compiz配置工具:sudo apt-get install compizconfig-settings-manager
  • 打开工具后,找到「窗口管理」→「窗口规则」,添加一条规则:
    • 「匹配窗口标题」填Google Chrome
    • 「动作」选择「最小化」或「隐藏」
      这样只要Chrome窗口打开,系统会自动把它移到后台。
方案3:用Xvfb虚拟显示器运行Chrome(非无头但完全后台)

虽然你说不能用无头模式,但Xvfb是虚拟显示服务,Chrome会在一个看不见的虚拟屏幕里运行,完全不会干扰你的主屏幕,而且这是真实的GUI环境,和无头模式有区别:

  1. 安装Xvfb:
sudo apt-get install xvfb
  1. 在Java代码里集成Xvfb:
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.server.browserlaunchers.Xvfb;

public class Test {
    public static void main(String[] args) {
        // 启动Xvfb虚拟显示器
        Xvfb xvfb = new Xvfb();
        xvfb.start();
        
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--no-sandbox"); // Ubuntu下可能需要这个参数
        WebDriver driver = new ChromeDriver(options);
        
        // 执行你的测试逻辑...
        
        // 测试结束后关闭driver和Xvfb
        driver.quit();
        xvfb.stop();
    }
}

或者你也可以在IntelliJ的运行配置里,把启动命令改成:

xvfb-run -a java -jar your-test-jar-file.jar

这样Chrome全程在虚拟屏幕里运行,你的主屏幕完全不会被打扰。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:19:47