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

Selenium Java中启动激活设备工具栏的Chrome配置咨询

解决方案:启动Chrome时默认激活Toggle Device Toolbar并开启触摸模拟

我之前刚好碰到过一模一样的需求,折腾了一会儿才找到可行的办法——单纯靠Chrome启动参数没法直接激活设备工具栏,得结合Chrome DevTools Protocol (CDP) 来实现。下面给你一步步拆解:

1. 基础配置:Headless + Mobile Emulation + 自动打开DevTools

首先还是先把你已经掌握的基础配置做好,包括Headless模式、移动设备模拟和自动打开DevTools的参数:

import org.openqa.selenium.chrome.ChromeOptions;
import java.util.HashMap;
import java.util.Map;
import com.google.common.collect.ImmutableMap;
import org.openqa.selenium.chrome.ChromeDriver;

public class MobileHeadlessTest {
    public static void main(String[] args) {
        // 配置ChromeOptions
        ChromeOptions options = new ChromeOptions();
        
        // 启用Headless模式(注意:不同Chrome版本参数可能有差异,旧版本用--headless=chrome)
        options.addArguments("--headless=new");
        // 启动时自动打开DevTools标签
        options.addArguments("--auto-open-devtools-for-tabs");
        
        // 配置Mobile Emulation,替换成你需要的设备
        Map<String, String> mobileEmu = new HashMap<>();
        mobileEmu.put("deviceName", "iPhone 14");
        options.setExperimentalOption("mobileEmulation", mobileEmu);
        
        // 可选:添加一些Headless模式下常用的优化参数
        options.addArguments("--disable-gpu");
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-dev-shm-usage");

2. 关键步骤:用CDP激活设备工具栏并开启触摸模拟

启动Driver之后,通过CDP发送两个核心命令:一是强制设置设备参数并开启触摸,二是直接切换激活设备工具栏:

// 启动ChromeDriver
        ChromeDriver driver = new ChromeDriver(options);
        
        // 1. 设置设备尺寸、缩放因子,并明确开启触摸模拟
        driver.executeCdpCommand("Emulation.setDeviceMetricsOverride", ImmutableMap.of(
            "width", 390,          // 和你选的deviceName对应,比如iPhone14的宽度
            "height", 844,         // iPhone14的高度
            "deviceScaleFactor", 3, // 设备像素比
            "mobile", true,
            "touch", true          // 强制开启触摸交互,把点击转为触摸操作
        ));
        
        // 2. 触发Toggle Device Toolbar,确保设备工具栏默认激活
        driver.executeCdpCommand("Emulation.toggleDeviceToolbar", ImmutableMap.of());
        
        // 接下来就可以正常执行你的测试步骤了
        driver.get("https://your-test-url.com");
        // ... 你的测试逻辑 ...
        
        driver.quit();
    }
}

补充说明

  • Chrome的启动参数里没有直接激活设备工具栏的选项,只能通过DevTools协议主动触发切换。
  • Emulation.setDeviceMetricsOverride不仅和mobileEmulation的配置呼应,还明确开启了touch: true,确保你的点击操作会被转换成触摸事件,完全模拟移动端交互。
  • 如果你用的ChromeDriver版本比较旧(比如低于v95),可能需要用driver.getDevTools().createSession()来发送CDP命令,但executeCdpCommand是更简洁的方式,适合新版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:08:23