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

Python中使用Selenium时如何显示浏览器内的鼠标光标

Selenium Chrome 自动化可视化显示鼠标光标实现方案

默认Selenium启动的Chrome自动化实例,会在执行动作时隐藏系统鼠标光标,无法直观追踪操作路径,可通过以下两层配置实现光标可见效果。

基础配置(优先实现系统原生光标可见)

  • 初始化Chrome驱动时,通过ChromeOptions追加关键启动参数,解除自动化模式对光标的隐藏逻辑:
    • 传入--disable-blink-features=AutomationControlled,屏蔽自动化标识对页面渲染的影响
    • 传入--exclude-switches enable-automation,关闭Chrome默认的自动化提示条,连带恢复系统光标的显示
    • 传入--start-maximized,保证窗口尺寸固定,避免光标位置和实际操作点偏移
  • 配置示例核心代码:
from selenium.webdriver.chrome.options import Options
from selenium.webdriver import Chrome
from webdriver_manager.chrome import ChromeDriverManager

chrome_opts = Options()
# 追加上述启动参数
chrome_opts.add_argument("--disable-blink-features=AutomationControlled")
chrome_opts.add_argument("--exclude-switches", "enable-automation")
chrome_opts.add_argument("--start-maximized")

driver = Chrome(service=ChromeDriverManager().install(), options=chrome_opts)

兜底方案(虚拟光标和脚本动作完全对齐)

如果原生系统光标仍然因为窗口层级问题被遮挡,可直接在页面注入最高层级的自定义虚拟光标,位置完全匹配Selenium的动作坐标,观测精度比系统光标更高:

  • 页面加载完成后,执行JS创建一个无交互属性、最高z-index的红色圆点作为虚拟光标,固定挂载在全局window对象上
  • 每次执行ActionChains动作前,先根据目标元素的坐标,同步更新虚拟光标的位置,再执行实际交互
  • 对应修正后的完整可运行代码:
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains, Chrome
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

# 初始化带光标显示配置的驱动
chrome_opts = Options()
chrome_opts.add_argument("--disable-blink-features=AutomationControlled")
chrome_opts.add_argument("--exclude-switches", "enable-automation")
chrome_opts.add_argument("--start-maximized")
driver = Chrome(service=ChromeDriverManager().install(), options=chrome_opts)
driver.get(URL)

# 注入虚拟光标层
driver.execute_script("""
  const cursor = document.createElement('div');
  cursor.style.cssText = `
    position: fixed;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: #ff3333;
    border: 2px solid #fff;
    z-index: 999999;
    pointer-events: none;
    transform: translate(-50%, -50%);
  `;
  document.body.appendChild(cursor);
  window._virtual_cursor = cursor;
""")

# 定位目标元素
link = driver.find_element(By.ID, 'link')
# 同步虚拟光标到元素中心位置
element_rect = link.rect
driver.execute_script("""
  window._virtual_cursor.style.left = `${arguments[0]}px`;
  window._virtual_cursor.style.top = `${arguments[1]}px`;
""", element_rect['x'] + element_rect['width']/2, element_rect['y'] + element_rect['height']/2)

# 执行双击动作
action = ActionChains(driver)
action.double_click(link).perform()

代码修正说明:原片段存在变量不匹配问题,定义的目标元素对象为link,但调用double_click方法时传入了从未定义的advanced_options_link,运行时会直接抛出NameError,替换为实际定位的元素对象即可正常运行。

注意事项

  • 旧版Chrome无头模式(--headless=old)完全不渲染桌面UI层,无论如何配置都无法显示光标,需要切换为新版无头参数--headless=new才能支持光标显示
  • 执行动作过程中不要手动移动实际物理鼠标,避免系统光标位置和脚本操作位置产生偏移

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 08:54:04