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

Selenium中如何验证鼠标悬停提示信息?

解决Selenium悬停后无法获取Tooltip文本的问题

嘿,我看你遇到的问题很典型——悬停动作做了,但就是拿不到Tooltip的内容,咱们一步步排查:

  • 首先,你定位Tooltip的元素路径错了!
    你现在用的xpath和原图标元素完全一样,这肯定不对啊。Tooltip要么是原元素自带的title属性,要么是悬停后才弹出的独立元素。

    • 如果是title属性的情况:根本不用找新元素,直接从原元素拿属性就行,代码改成这样:
      WebElement element = driver.findElement(By.xpath("/html/body/div/form/div/div/div/div/div[1]/div/div/div"));
      Actions action = new Actions(driver);
      action.moveToElement(element).build().perform();
      // 直接获取title属性值
      String toolTipTxt = element.getAttribute("title");
      System.out.println(toolTipTxt);
      
    • 如果是独立弹出的Tooltip元素:按F12打开浏览器开发者工具,悬停在图标上,找到那个突然出现的Tooltip对应的HTML标签(通常会有tooltip相关的class名),然后写个正确的相对xpath替换掉你现在的重复路径。
  • 其次,可能是Tooltip加载有延迟
    有时候悬停后Tooltip不会立刻显示,你直接找元素肯定拿不到。加个显式等待,等元素可见了再操作:

    WebElement element = driver.findElement(By.xpath("/html/body/div/form/div/div/div/div/div[1]/div/div/div"));
    Actions action = new Actions(driver);
    action.moveToElement(element).build().perform();
    // 等待10秒,直到Tooltip元素可见
    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
    WebElement toolTipElement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("替换成Tooltip的正确xpath")));
    String toolTipTxt = toolTipElement.getText();
    System.out.println(toolTipTxt);
    
  • 还有一种特殊情况:Tooltip用CSS伪元素显示
    有些网站会用:before或:after这类CSS伪元素来展示Tooltip文本,这时候getText()是拿不到的,得用getCssValue("content"):

    // 先定位到Tooltip对应的元素(可能是原元素或者父元素)
    String toolTipTxt = toolTipElement.getCssValue("content");
    // 注意拿到的文本可能带双引号,需要去掉
    toolTipTxt = toolTipTxt.replace("\"", "");
    System.out.println(toolTipTxt);
    

另外提个小建议:别用这种从头到尾的绝对xpath(/html/body/...),页面结构稍微变一下就失效了,换成基于元素id、class或者其他唯一属性的相对xpath更靠谱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:40:28