我想使用文本在网页上找到一个元素.
我知道有一个方法名称包含这样做,例如:
tr[contains(.,'hello')]/td
但问题是如果我有两个元素名称hello和hello1那么这个函数不能正常工作.
是否有任何其他方法,如包含精确的字符串匹配定位元素?
Den*_*fel 27
tr[.//text()='hello']/td
这将选择所有tr元素的所有td子元素,其中包含一个完全具有'hello' 的子元素.这样的XPath对我来说仍然很奇怪.
我相信这更有意义:
tr/td[./text()='hello']
因为它只选择包含文本的td.
这有帮助吗?
这一切都取决于你的HTML实际包含的内容,但你的tr[contains(.,'hello')]/tdXPath选择器意味着" 第一行中包含字符串'hello'的第一个单元格 "(或更准确地说," TR元素中的第一个TD元素)在其中的任何地方包含字符串'hello' ",因为Selenium不知道所涉及的元素到底是做什么的.这就是为什么当有包含"hello"和"hello1"的行时,它会得到错误的结果 - 两者都包含"hello".
选择器tr[. ='hello']/td会更准确,但它有点不寻常(因为HTML TR元素不应该包含文本 - 文本应该在TR中的TH或TD元素中),并且它可能不起作用(因为任何其他单元格中的文本都会破坏比较).  您可能想要 tr[td[.='hello']]/td,这意味着" TR元素中包含的第一个TD元素包含一个TD元素,该元素具有字符串'hello',因为它是完整的文本 ".
好吧,你的问题是你正在 tr 中搜索文本(无论如何这是不正确的),这会导致函数出现问题contains,无法接受文本列表。尝试改用此位置路径。它应该检索你想要的东西。
//tr/td[contains(./text(),"hello")]
此位置路径将检索一组节点,您必须在这些节点上迭代才能获取文本。您可以尝试附加
/text()
但这会导致(至少在我的测试中)结果是一个字符串,它是所有匹配字符串的串联。
| 归档时间: | 
 | 
| 查看次数: | 40296 次 | 
| 最近记录: |