首页 > 解决方案 > 当标签内可用时,无法使用文本定位元素

问题描述

具有如下的 HTML 代码。我想使用文本 SOFTWATE 定位元素。

<label _ngcontent-c5="" class="form-check-label" style="" xpath="1">
  <input _ngcontent-c5="" class="form-check-input ng-untouched ng-pristine ng-valid" type="checkbox">
  <!----> 
  <!---->
  <span _ngcontent-c5="" class="checkmark">
  </span>
  SOFTWARE 
</label>

尝试使用 xpath //div[@class='filter-item-wrapper activate']//label[contains(text(),'SOFTWARE')],但没有运气。

SOFTWARE任何人都可以使用文本“ ”帮助找到该元素的位置

标签: javaseleniumxpath

解决方案


这正是为什么我们总是建议人们避免使用text()直接访问文本节点的原因。使用它来访问包含元素的字符串值几乎总是更好,string()最大的区别之一是结果string()不受添加或删除注释的影响。

所以使用contains(string(), 'SOFTWARE')-- 然后可以缩写为,因为当需要字符串并且您提供节点时contains(., 'SOFTWARE'),调用是隐式的。string()


推荐阅读