【发布时间】:2021-12-24 22:34:45
【问题描述】:
我正在尝试计算部分文本为 "25516.B1-" 的元素出现在页面上的次数。
现在我正在尝试这个。但是,即使页面上只有 3 个元素实例,它也会返回 17。
Count 3 basiskerntaken
${count}= Get Element Count //*[contains(.,"25516.B1-")]
Log To Console ${count}
【问题讨论】:
-
这根本不像是python,是吗?
-
//*[contains(.,"25516.B1-")]包括子节点。试试//*[contains(text(),"25516.B1-")] -
@Trapli:更接近,但请参阅 Why is XPath contains(text(),'substring') not working as expected? 以了解该方法的问题,并参阅 my answer below 了解在文本节点中计算子字符串的更好方法。
-
@kjhughes 你的答案不适用于 python + selenium,因为 selenium 坚持只返回 webelements,它不会返回文本节点 (stackoverflow.com/questions/20375096)。如果 xml/html 源是 lxml 树或其他东西,它可能会起作用,这不是 那么挑剔
-
@Trapli:如果 Selenium 有这样的限制,它就是 XPath 的障碍宿主。好吧,我已经更新了我的答案,以获得 XPath 主机的解决方法,它只能评估返回元素的 XPath。感谢您提供信息。
标签: python xml selenium xpath robotframework