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

如何使用Selenium WebDriver将焦点从浏览器切换回终端?

解决Selenium运行时焦点留在浏览器、无法在终端输入的问题

这个问题我之前也碰到过!当Selenium启动浏览器后,系统焦点会自动跳到浏览器窗口,导致终端没法直接接收输入,确实挺影响效率的。下面给你几个不同系统下都能用的可行方案:

方法一:用pyautogui模拟系统快捷键切换(跨平台通用)

这是最简单的跨平台方案,通过模拟Alt+Tab(Windows/Linux)或Command+Tab(Mac)快捷键切回终端,不需要知道窗口具体信息:

首先先安装依赖库:

pip install pyautogui

修改后的代码示例:

import time
import pyautogui
from selenium import webdriver

driver = webdriver.Chrome() # Optional argument, if not specified will search path.
driver.get('https://www.seleniumeasy.com/test/basic-first-form-demo.html')
search_box = driver.find_element_by_id('user-message')
search_box.send_keys('John Rambo')
time.sleep(1) # 给浏览器一点加载时间,避免切换过快

# 根据你的系统选择对应的快捷键
# Windows/Linux用户用这行
pyautogui.hotkey('alt', 'tab')
# Mac用户替换成下面这行
# pyautogui.hotkey('command', 'tab')

test = input('please provide a number 0-9: ') # 现在焦点应该在终端了
driver.quit()

注意:如果你的终端不是前一个打开的窗口,可能需要多按几次快捷键,可以重复调用pyautogui.hotkey或者调整等待时间。另外Mac用户需要在「系统设置-隐私与安全性-辅助功能」里允许Python控制电脑,否则pyautogui会失效。

方法二:Windows系统下用ctypes调用系统API(精准切换)

如果你是Windows用户,不想依赖第三方库,可以直接调用Windows系统API找到终端窗口并设置焦点,这样更精准:

import time
import ctypes
from selenium import webdriver

# 加载Windows系统库
user32 = ctypes.WinDLL('user32', use_last_error=True)

def set_terminal_focus():
    # 替换成你的终端窗口标题,比如命令提示符是"Command Prompt",PowerShell是"Windows PowerShell"
    terminal_title = "Command Prompt"
    # 根据窗口标题查找句柄
    hwnd = user32.FindWindowW(None, terminal_title)
    if hwnd:
        # 将窗口设置为前台(获取焦点)
        user32.SetForegroundWindow(hwnd)

driver = webdriver.Chrome()
driver.get('https://www.seleniumeasy.com/test/basic-first-form-demo.html')
search_box = driver.find_element_by_id('user-message')
search_box.send_keys('John Rambo')
time.sleep(1)

# 切换到终端窗口
set_terminal_focus()

test = input('please provide a number 0-9: ')
driver.quit()

方法三:Mac系统下用AppleScript激活终端

Mac用户可以通过调用AppleScript直接激活终端应用,无需依赖第三方库:

import time
import subprocess
from selenium import webdriver

def switch_to_terminal():
    # 编写AppleScript命令激活终端
    activate_script = '''tell application "Terminal" to activate'''
    subprocess.run(["osascript", "-e", activate_script])

driver = webdriver.Chrome()
driver.get('https://www.seleniumeasy.com/test/basic-first-form-demo.html')
search_box = driver.find_element_by_id('user-message')
search_box.send_keys('John Rambo')
time.sleep(1)

# 切换到终端
switch_to_terminal()

test = input('please provide a number 0-9: ')
driver.quit()

这些方法都能帮你把焦点从浏览器切回终端,你可以根据自己的系统选择最适合的方案~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:55:54