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

使用Selenium Webdriver无法读取被省略号隐藏的完整文本如何解决

你当前的代码存在两个核心问题:

  1. 调用getCssValue("text-overflow")仅能获取元素的文本溢出CSS配置项,和你要获取商品完整名称的需求完全不匹配,自然得不到预期结果。
  2. 所用CSS选择器层级嵌套过深、未限定查询范围,很容易匹配到页面其他区域的商品名称元素,稳定性极差。

1. 先验证定位器有效性

优化定位逻辑,限定仅在「为你推荐」模块内查询商品名称,避免匹配到其他区域的元素:

div[data-qa='recommended-products'] div[data-qa='product-name'] span:first-child

匹配到元素后先调用getText()打印,确认输出为截断后的U-HOOME Push Pop Bubble Fidget Sensor…,即说明定位正确。

2. 获取完整商品名称

按优先级从高到低给你三个可行方案:

方案1:读取title属性

绝大多数站点做文本省略处理时,都会将完整文本预先存入元素的title属性(悬停显示的内容就是该属性值),无需任何交互即可直接读取:

WebElement productNameEle = driver.findElement(By.cssSelector("div[data-qa='recommended-products'] div[data-qa='product-name'] span:first-child"));
String fullName = productNameEle.getAttribute("title");
System.out.println(fullName);

方案2:读取内置文本属性

CSS截断仅为视觉层的展示处理,元素本身的textContent属性中仍存储了完整文本,直接读取即可:

String fullName = productNameEle.getAttribute("textContent").trim();
System.out.println(fullName);

方案3:模拟悬停后读取

如果前两种方案都失效,再通过Actions类模拟鼠标悬停触发文本展示后读取:

Actions actions = new Actions(driver);
actions.moveToElement(productNameEle).perform();
// 生产环境建议替换为显式等待,此处sleep仅做示例
Thread.sleep(300);
String fullName = productNameEle.getText();
System.out.println(fullName);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:00:01