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

如何在VB.NET和C#中通过ChromeDriver运行Selenium测试时让Chrome浏览器获焦?

解决ChromeDriver执行Selenium测试时自动让浏览器获焦的问题

你遇到的问题是switchTo().window()仅切换了Selenium的操作上下文,并不会触发系统层面的窗口焦点切换,所以浏览器仍会在后台运行。下面是几种可行的解决方案:

方案一:使用Chrome DevTools Protocol(CDP)推荐

通过浏览器调试协议直接让窗口前置,兼容性好且无需依赖系统模拟:

// 初始化ChromeDriver
ChromeDriver driver = new ChromeDriver();

// 获取并创建DevTools会话
DevTools devTools = driver.getDevTools();
devTools.createSession();

// 调用API将浏览器窗口带到前台
devTools.send(Browser.bringToFront());

这个方法直接通过浏览器内部接口实现,不受系统差异影响,是最可靠的方式。

方案二:用Robot类模拟系统按键适合简单场景

通过模拟Alt+TabWindows或Command+TabMac的按键操作,让Chrome窗口获得焦点:

import java.awt.Robot;
import java.awt.event.KeyEvent;

// 在需要获焦的时机调用
try {
    Robot robot = new Robot();
    // 模拟Alt+Tab切换窗口
    robot.keyPress(KeyEvent.VK_ALT);
    robot.keyPress(KeyEvent.VK_TAB);
    robot.keyRelease(KeyEvent.VK_TAB);
    robot.keyRelease(KeyEvent.VK_ALT);
} catch (Exception e) {
    e.printStackTrace();
}

注意:如果有多个后台窗口,可能需要多执行几次Tab按键;Mac系统需要把VK_ALT换成VK_META即Command键。

方案三:配合Chrome启动参数辅助优化

在初始化ChromeOptions时添加参数,让浏览器启动时最大化并提升窗口优先级:

ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized"); // 启动时最大化窗口
options.addArguments("--force-app-mode"); // 强制应用模式,提升窗口优先级
ChromeDriver driver = new ChromeDriver(options);

这个方法单独使用可能无法保证100%获焦,但配合前两种方法可以增强效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 10:38:11