如何在Python Selenium脚本运行时随时通过输入暂停并恢复?
实现Selenium脚本的随时暂停/恢复功能
要实现随时按回车键暂停/恢复Selenium脚本的需求,核心思路是通过多线程分离任务执行与键盘监听:一个线程负责WebDriver的业务操作,另一个线程专门监听回车键,通过线程同步事件(threading.Event)控制任务的暂停与恢复。
步骤1:安装依赖库
需要用到keyboard库来监听键盘事件,在Anaconda Prompt中执行:
pip install keyboard
步骤2:完整代码示例
import threading import time from selenium import webdriver import keyboard # 创建线程事件,用于控制暂停/恢复 pause_event = threading.Event() def listen_for_pause_toggle(): """监听回车键,切换暂停/恢复状态""" while True: # 等待回车键按下 keyboard.wait('enter') if pause_event.is_set(): # 当前是运行状态,切换为暂停 pause_event.clear() print("\n脚本已暂停,按回车键恢复") else: # 当前是暂停状态,切换为运行 pause_event.set() print("\n脚本已恢复") def run_selenium_operations(): """执行Selenium业务逻辑""" driver = webdriver.Chrome() try: driver.get("https://www.example.com") print("脚本启动,按回车键暂停") # 示例:循环执行操作,替换为你的实际业务逻辑 while True: # 等待恢复信号(如果处于暂停状态会阻塞) pause_event.wait() # -------------------------- # 这里写你的Selenium操作代码 print(f"当前页面标题: {driver.title}") # 示例操作:刷新页面 driver.refresh() # -------------------------- time.sleep(2) # 模拟操作间隔,可根据实际调整 finally: driver.quit() print("WebDriver已关闭") if __name__ == "__main__": # 初始设置为允许运行状态 pause_event.set() # 启动键盘监听线程(守护线程,随主线程退出) listener_thread = threading.Thread(target=listen_for_pause_toggle, daemon=True) listener_thread.start() # 启动Selenium任务线程 selenium_thread = threading.Thread(target=run_selenium_operations) selenium_thread.start() selenium_thread.join()
关键说明
pause_event.set()表示允许任务执行,pause_event.clear()表示暂停任务,pause_event.wait()会阻塞线程直到事件被设置- 键盘监听线程设为守护线程,当Selenium任务线程结束时,监听线程会自动退出
- 运行脚本时,确保Anaconda Prompt处于前台,否则键盘输入可能无法被捕获
- 你需要将示例中的Selenium操作(如刷新页面)替换为自己的业务逻辑,只要在循环中加入
pause_event.wait(),就能实现每次操作前检查是否需要暂停
内容的提问来源于stack exchange,提问作者kalmykov
相关产品推荐
相关产品推荐

