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

如何并行运行多个独立浏览器并为每个分配单独鼠标光标?

多浏览器同步自动化鼠标移动解决方案

核心思路

放弃全局鼠标模拟工具(如pyautogui),改用浏览器原生自动化框架(控制独立浏览器实例)+同步控制机制,既能保证每个浏览器的操作独立,又能实现同步执行。

方案一:Selenium + 多线程 + 同步事件

Selenium可以为每个任务启动独立的浏览器进程,通过ActionChains实现单浏览器内的鼠标操作,配合线程同步事件确保所有浏览器同时执行移动动作。

示例代码:

import threading
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By

# 同步信号:所有线程等待该信号触发后执行鼠标操作
sync_trigger = threading.Event()

def run_browser_task(target_url):
    # 启动独立浏览器实例
    driver = webdriver.Chrome()
    driver.get(target_url)
    
    # 等待同步信号
    sync_trigger.wait()
    
    # 模拟鼠标移动到页面body元素(也可指定坐标:move_by_offset(x,y))
    target_element = driver.find_element(By.TAG_NAME, "body")
    actions = ActionChains(driver)
    actions.move_to_element(target_element).perform()
    
    # 可添加后续自动化任务
    # driver.quit()

# 启动多个浏览器线程
task_threads = []
target_urls = ["https://example.com", "https://example.org", "https://example.net"]
for url in target_urls:
    thread = threading.Thread(target=run_browser_task, args=(url,))
    task_threads.append(thread)
    thread.start()

# 所有线程启动完成后,触发同步信号,所有浏览器同时执行鼠标移动
sync_trigger.set()

# 等待所有任务结束
for thread in task_threads:
    thread.join()

方案二:Playwright + 异步任务 + 同步事件

Playwright支持更简洁的异步多浏览器控制,API设计更现代,适合大规模并行任务。

示例代码:

import asyncio
from playwright.async_api import async_playwright

async def browser_automation_task(target_url, sync_event):
    async with async_playwright() as p:
        # 启动独立浏览器实例
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto(target_url)
        
        # 等待同步信号
        await sync_event.wait()
        
        # 模拟鼠标移动到指定坐标(x=150, y=200)
        await page.mouse.move(150, 200)
        
        # 可添加后续自动化任务
        # await browser.close()

async def main():
    # 创建异步同步事件
    sync_event = asyncio.Event()
    target_urls = ["https://example.com", "https://example.org", "https://example.net"]
    
    # 批量创建异步任务
    tasks = [browser_automation_task(url, sync_event) for url in target_urls]
    
    # 触发同步信号,所有浏览器同时执行鼠标移动
    sync_event.set()
    
    # 等待所有任务完成
    await asyncio.gather(*tasks)

asyncio.run(main())

为什么你之前的方案无效?

  • pyautogui:属于全局系统级模拟,操作的是物理鼠标坐标,无法区分不同浏览器窗口,无法实现单浏览器内的独立移动。
  • 浏览器扩展:受限于浏览器的单进程/沙箱机制,无法跨多个独立浏览器实例同步执行操作。
  • 虚拟化方案:部署和同步复杂度极高,属于过度设计,完全没必要用这种重量级方案解决该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 17:20:09