Selenium XPath 合并跨越文本并查找包含子字符串的元素

Posted

技术标签:

【中文标题】Selenium XPath 合并跨越文本并查找包含子字符串的元素【英文标题】:Selenium XPath merge spans text and find element that contains substring 【发布时间】:2021-12-17 06:30:37 【问题描述】:

我在创建 Selenium 查询以使用 XPath 从列表中选择特定元素时遇到问题。 我试过//li[contains(text(), 'Addressing machine wholesaling')],但似乎我需要以某种方式合并内部跨度。有没有办法做到这一点?

这里是列表的例子。在这种情况下,我需要选择第一个 li 元素。

<ul aria-labelledby="businessActivitySuggestionsProbableHeader1" class="anzsicList probable">
   <li activity="55" index="0" role="option" class="">
       <span class="matchText">Addressing</span>
       <span class="matchText">machine</span>
       <span class="matchText">wholesaling</span>
   </li>
   <li activity="4554" index="1" role="option" class="">
       <span class="matchText">Machine</span> manufacturing (including accounting, 
       <span class="matchText">addressing</span>, business, enveloping, letter folding, numbering, photocopying or duplicating)
   </li>
</ul>

如果不可能,也许还有其他方法可以做到这一点,而不是使用 XPath?

【问题讨论】:

【参考方案1】:

这个 XPath,

//li[normalize-space() = 'Addressing machine wholesaling']

将根据要求选择您的第一个 li 元素。

另见

Testing text() nodes vs string values in XPath How to use XPath contains() for specific text?

【讨论】:

以上是关于Selenium XPath 合并跨越文本并查找包含子字符串的元素的主要内容,如果未能解决你的问题,请参考以下文章

在selenium中使用xpath查找值大于文本的span

如何使用 Selenium xpath 查找包含“下载”一词的所有元素?

在 Selenium 测试中使用 XPath 通过文本获取 WebElement

Selenium 通过 xpath 查找所有元素

Selenium 和 xpath:找到一个带有类/ID 的 div 并验证里面的文本

selenium项目中遇到的问题总结