如何让Selenium WebDriver在后台运行Chrome且不激活窗口?
解决Chrome Selenium后台运行不激活窗口的方案
针对你遇到的问题,这里提供几个可行的方案,既能让Chrome在后台运行,又不会触发网站的DDoS防护,也不会激活窗口影响你使用电脑:
方案1:将Chrome窗口移至屏幕可视区域外
这是最简单的方案,无需额外依赖,通过Chrome启动参数把窗口放到屏幕看不到的位置,操作时就不会弹出到前台。
代码示例:
from selenium import webdriver from selenium.webdriver.chrome.options import Options import time chrome_options = Options() # 把窗口坐标设为负数,移到屏幕外 chrome_options.add_argument("--window-position=-2000,-2000") # 可选:设置正常窗口尺寸,避免网站检测异常 chrome_options.add_argument("--window-size=1920,1080") driver = webdriver.Chrome(options=chrome_options) def check_appointment(): driver.get("你的目标政务网站URL") # 这里替换成你输入验证码、检查预约时段的代码 print("完成一次预约可用性检查") # 每5分钟执行一次循环 while True: check_appointment() time.sleep(300) # 300秒=5分钟
如果你的屏幕分辨率特别宽,可把-2000改成更大的负数(比如-3000),确保窗口完全在可视区域外。
方案2:使用虚拟显示环境(跨平台)
通过创建虚拟显示让Chrome在独立的虚拟桌面运行,完全不干扰当前系统的桌面环境,适合需要彻底隔离的场景。
步骤1:安装依赖
首先安装Python库:
pip install pyvirtualdisplay
Linux系统还需要安装xvfb服务:
sudo apt-get install xvfb
步骤2:代码示例
from selenium import webdriver from selenium.webdriver.chrome.options import Options from pyvirtualdisplay import Display import time # 创建虚拟显示,visible=0表示隐藏 display = Display(visible=0, size=(1920, 1080)) display.start() chrome_options = Options() # 添加参数避免Linux下的权限问题和资源限制 chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") driver = webdriver.Chrome(options=chrome_options) def check_appointment(): driver.get("你的目标政务网站URL") # 替换成你的验证码输入、预约检查逻辑 print("完成一次预约可用性检查") while True: check_appointment() time.sleep(300) # 程序退出时记得关闭资源(可选,脚本持续运行时可不加) # driver.quit() # display.stop()
方案3:Windows系统专属:强制隐藏Chrome窗口
利用Windows系统API直接隐藏Chrome窗口,即使操作过程中窗口试图激活,也能立刻被隐藏。
步骤1:安装依赖
pip install pywin32
步骤2:代码示例
from selenium import webdriver from selenium.webdriver.chrome.options import Options import win32gui import win32con import time def hide_chrome_window(): # 查找Chrome主窗口的句柄 hwnd = win32gui.FindWindow("Chrome_WidgetWin_1", None) if hwnd: # 强制隐藏窗口 win32gui.ShowWindow(hwnd, win32con.SW_HIDE) chrome_options = Options() chrome_options.add_argument("--window-size=1920,1080") driver = webdriver.Chrome(options=chrome_options) # 启动Chrome后立刻隐藏窗口 hide_chrome_window() def check_appointment(): driver.get("你的目标政务网站URL") # 操作后可能窗口会短暂显示,再次隐藏 hide_chrome_window() # 替换成你的验证码输入、预约检查逻辑 print("完成一次预约可用性检查") while True: check_appointment() time.sleep(300)
内容的提问来源于stack exchange,提问作者Dork
相关产品推荐
相关产品推荐

