如何让Python Selenium Webdriver编写的类实现无限运行直至手动停止
实现Selenium脚本无限循环运行的方案
核心实现逻辑是通过while True构建无限循环执行核心业务逻辑,同时添加异常捕获处理手动终止信号,程序退出时主动释放浏览器驱动资源,避免后台残留无用进程。
修改后的完整代码
import time from selenium import webdriver # Selenium 4.0及以上版本需要额外导入By类 # from selenium.webdriver.common.by import By class Mybot: def __init__(self): # 驱动初始化、地址录入仅执行一次,避免反复打开关闭浏览器 self.target_url = input("Enter URL Here : ") # 替换为你本地的chromedriver实际路径 self.driver = webdriver.Chrome("你的chromedriver路径") def run_single_task(self): self.driver.get(self.target_url) time.sleep(5) # Selenium 3及以下版本可用原find_element_by_*写法 search_box = self.driver.find_element_by_name('q') # Selenium 4.0及以上版本建议替换为如下写法 # search_box = self.driver.find_element(By.NAME, 'q') search_box.clear() search_box.send_keys('Free Fire') search_box.submit() # 替换为你实际需要点击的元素XPath路径 self.driver.find_element_by_xpath('你的目标元素XPath').click() time.sleep(5) def release_resource(self): # 退出驱动,关闭关联的所有浏览器窗口 self.driver.quit() if __name__ == "__main__": bot = Mybot() try: # 无限循环执行业务逻辑 while True: bot.run_single_task() # 两次任务之间的间隔时间,可根据需求自行调整 time.sleep(3) # 捕获Ctrl+C手动终止信号 except KeyboardInterrupt: print("已手动终止程序运行") bot.release_resource() # 捕获其他运行异常,避免直接闪退且残留进程 except Exception as err: print(f"程序运行出错,错误信息:{err}") bot.release_resource()
关键修改说明
- 把原
__init__中的业务逻辑抽离为单独的执行方法,避免初始化函数逻辑过重,也方便循环调用 - 外层通过
while True持续调用业务逻辑方法,实现无限循环运行 - 新增
KeyboardInterrupt异常捕获,你按下Ctrl+C手动终止程序时,会自动关闭浏览器、释放驱动资源 - 新增通用异常捕获分支,单次任务执行出错时也会主动释放资源,避免后台残留Chrome进程
- 你可以根据自己的需求调整两次任务之间的间隔时长,也可以将固定
time.sleep替换为显示等待,提升脚本运行稳定性
注意事项
- 代码中留空的chromedriver路径、目标元素XPath需要替换为你自己的实际参数
- 如果你使用的是Selenium 4.0及以上版本,原有的
find_element_by_*系列方法已经被官方弃用,建议替换为代码中注释的By系列写法
内容的提问来源于stack exchange,提问作者axchraf
相关产品推荐
相关产品推荐

