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

使用Chrome VBA Selenium提取动态Tooltip值时遇到问题

VBA Chrome Selenium提取动态Tooltip值解决方案

问题分析

原代码存在两个核心问题:

  1. 固定时长的Sleep无法保证Tooltip完全加载,导致获取文本时元素可能还未就绪
  2. 错误假设Tooltip通过点击触发,实际该页面的Tooltip是通过鼠标悬停触发的

修正后的代码

Dim d As New ChromeDriver
Dim wait As New WebDriverWait

d.Get "https://norway.dealroom.co/companies/nortech_1"
' 初始化等待器,最长等待10秒
Set wait = New WebDriverWait
wait.Timeout = 10

' 定位触发Tooltip的元素(用相对定位替代绝对XPath,提升稳定性)
Dim tooltipTrigger As WebElement
Set tooltipTrigger = wait.Until(ExpectedConditions.ElementIsVisible(By.CssSelector, "div.company-header__top div[data-tooltip] span"))

' 模拟鼠标悬停触发Tooltip
d.Actions.MoveToElement(tooltipTrigger).Perform

' 等待Tooltip加载完成并获取文本
Dim tooltipContent As WebElement
Set tooltipContent = wait.Until(ExpectedConditions.ElementIsVisible(By.ClassName, "tooltip-wraper--open"))
MsgBox tooltipContent.Text

d.Quit

关键优化点

  • 动态等待替代固定Sleep:使用WebDriverWait配合ExpectedConditions,确保元素就绪后再执行操作,避免因网络或页面加载延迟导致的失败
  • 模拟鼠标悬停:针对该页面Tooltip的触发逻辑,用Actions.MoveToElement模拟鼠标悬停,而非强制点击
  • 稳定定位策略:用CSS选择器替代绝对XPath,减少页面结构变化导致的定位失效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 06:15:28