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
相关产品推荐
相关产品推荐

