Python Selenium实现Chrome标签页监控 限制最多3个标签自动加载后续任务
Chrome标签页数量监控自动化实现方案
现有代码问题
- 原for循环逻辑在标签数达到3时会直接跳过后续待处理数据,不会监听标签关闭事件触发后续打开操作
- 依赖pyautogui全局快捷键操作,容易受前台窗口变化影响导致逻辑失效
- 未定义
test变量,zip遍历单列表属于冗余写法
修正后实现代码
from collections import deque import pandas as pd import pyautogui as pg import time # 原有方法调整 def base_dados_processos(self): try: df = pd.read_excel('TABLE.xlsx') # 把待处理数据存入队列 self.proc_queue = deque(df['COLUM'].tolist()) except Exception: pg.alert(text='error', title='ERROR', button='OK') self.chrome.quit() def loop_pesquisa(self): # 队列不为空就持续处理 while self.proc_queue: num_current_tabs = len(self.chrome.window_handles) # 标签数小于3时打开下一个 if num_current_tabs < 3: # 取出队列头部的待处理数据 current_proc = self.proc_queue.popleft() # 新建标签页,用selenium原生方法更稳定 self.chrome.switch_to.new_window('tab') time.sleep(1) self.chrome.get('https://stackoverflow.com/') pg.write(str(current_proc)) pg.press('enter') time.sleep(3) pg.press('tab', presses=26) pg.press('enter') time.sleep(1) pg.press('enter') else: # 标签数已满,等待1秒后重新检测 time.sleep(1)
逻辑说明
- 用队列存储所有待处理的Excel数据,保证先进先出的处理顺序
- 外层用while循环持续检测队列剩余数据和当前标签数量,标签关闭后数量降到3以下时会自动取出下一条数据打开新标签
- 替换原快捷键操作为selenium原生的新建标签页方法,不受前台窗口切换影响,稳定性更高
- 如果需要实现处理完自动关闭标签,可在标签页处理逻辑末尾加
self.chrome.close(),再切换回第一个标签页即可
内容的提问来源于stack exchange,提问作者Avestruz
相关产品推荐
相关产品推荐

