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

Selenium Java中不使用Robot类实现Chrome全屏退出(适配无头模式)

可行解决方案

方案1:直接调用浏览器全屏退出API(最推荐)

直接通过Selenium的JavascriptExecutor调用浏览器原生的全屏操作接口,不需要依赖键盘事件,普通模式、无头模式下均生效,是最稳定的方案:

JavascriptExecutor js = (JavascriptExecutor) driver;
// 先判断当前是否处于全屏状态,再执行退出操作
js.executeScript("if (document.fullscreenElement) document.exitFullscreen();");

方案2:JS模拟ESC按键事件

如果你的应用退出全屏的逻辑绑定了ESC按键的监听,必须触发按键事件才能走全流程,可以通过JS主动在文档层派发ESC键盘事件,不需要页面获得焦点即可生效:

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("""
    const escapeEvent = new KeyboardEvent('keydown', {
        key: 'Escape',
        code: 'Escape',
        keyCode: 27,
        which: 27,
        bubbles: true,
        cancelable: true
    });
    document.dispatchEvent(escapeEvent);
""");

如果使用JDK15以下版本,将多行字符串替换为普通字符串拼接即可使用。

原方案失效原因说明

  • Actions类的sendKeys方法只会把按键指令发送给当前页面获得焦点的元素,如果登录后焦点不在顶层文档上,ESC事件无法被全局的全屏监听逻辑捕获,因此不会生效。
  • Robot类依赖操作系统级的输入事件触发,无头模式下浏览器没有挂载到系统GUI上下文,没有对应的输入通道,因此完全失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:54:03