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

如何获取鼠标悬浮才显示的网页浮动窗口内容?Selenium单元素内鼠标控制问题

Selenium 图表悬浮弹窗数据采集解决方案

核心实现方法

你遇到的单个图表元素内部精准悬浮的问题,可以直接使用Selenium ActionChains提供的move_to_element_with_offset方法实现,该方法支持基于目标元素左上角的坐标偏移控制鼠标位置,完全适配无独立锚点的图表悬浮场景。

具体操作步骤

1. 基础偏移悬浮调用

move_to_element_with_offset接收三个参数:目标元素、x轴偏移量、y轴偏移量,坐标原点为目标元素的左上角,x轴正值向右延伸,y轴正值向下延伸。
代码示例:

from selenium.webdriver.common.action_chains import ActionChains
# 你原有代码中获取到的图表元素
pr = driver.find_element(By.XPATH, pane_pr)
# 移动到图表内部距离左上角x=120、y=60的位置触发悬浮
ActionChains(driver).move_to_element_with_offset(pr, 120, 60).perform()
# 等待悬浮窗渲染完成
time.sleep(2)
# 定位全局悬浮窗提取数据即可,多数图表的悬浮窗为全局唯一元素,无需对应点位锚点
tooltip = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CLASS_NAME, "替换为实际悬浮窗的class属性值"))
)
print(tooltip.text)

2. 偏移量获取方法

  • 手动打开目标页面,调出浏览器开发者工具的元素选择面板,手动将鼠标移动到需要触发悬浮的点位,对比该点位和图表元素左上角的像素差,即可得到需要设置的x、y偏移量。
  • 如需遍历图表全量点位,可以先获取图表尺寸,按固定步长递增偏移量遍历:
# 获取图表的宽高
chart_width = pr.size['width']
chart_height = pr.size['height']
# 每80px遍历一次x轴点位,y轴固定在图表垂直居中位置
step = 80
for x_offset in range(0, chart_width, step):
    ActionChains(driver).move_to_element_with_offset(pr, x_offset, chart_height//2).perform()
    time.sleep(1)
    # 此处添加当前点位悬浮窗的数据提取逻辑

稳定性优化建议

  • 操作前先执行pr.location_once_scrolled_into_view将图表滚动到视口可见区域,避免偏移量计算偏差
  • 尽量替换固定time.sleep为显式等待悬浮窗出现,减少不必要的等待时间同时提升运行稳定性
  • 若悬浮触发失效,可以先点击一次图表区域获取焦点后再执行悬浮操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:27:02