Xpath 查找具有:specific属性和具有特定文本的子元素
对于空闲的代码示例,我需要检查是否存在一个tr,type=“a”,并且该tr的子级为td,文本为“3”:Xpath 查找具有:specific属性和具有特定文本的子元素,xpath,watir-webdriver,Xpath,Watir Webdriver,对于空闲的代码示例,我需要检查是否存在一个tr,type=“a”,并且该tr的子级为td,文本为“3”: <table> <tr type="a"> <td>1</td> </tr> <tr type="b"> <td>1</td> </tr> <tr type="a"> <td>3</td
<table>
<tr type="a">
<td>1</td>
</tr>
<tr type="b">
<td>1</td>
</tr>
<tr type="a">
<td>3</td>
</tr>
</table>
但是它不起作用(xpath表达式只返回2个现有tr中的第一个tr)
有什么想法吗?
如果我需要的tr
存在,是否有一个xpath表达式将返回true
b.tr(:xpath =>"//tr[@type='a']", :index => 1).td(:text =>'3').exists?
或
我不确定这是否有帮助,但这段代码返回xpath表达式返回的元素数,因此您可以检查计数是否为0,然后检查是否没有匹配项,否则它将返回匹配数:
var doc = document.evaluate("//table/tbody/tr[@type='a']/td[text()=1]",document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
doc.snapshotLength
或
如果你有你的桌子的id
希望这对您有所帮助。使用:
boolean(/*/tr[@type='a']/td[. = 3])
当存在一个字符串值等于数字3的td
且其父tr
的type
属性的字符串值为“a”,并且该属性(该tr
)是XML文档顶部元素的子元素时,此XPath表达式的计算结果正好为true()
否则XPath表达式的计算结果为false()
或者,也可以在不使用XPath的情况下执行此操作:
b.trs.count{ |tr|
tr.attribute_value('type') == 'a' and tr.td(:text, '3').present?
} > 0
更详细一点,但我认为它比XPath更容易阅读。不知道为什么要使用索引。。?这只是一个代码示例,我不确定我要找的索引2是否能完美工作!非常感谢。
var doc = document.evaluate("//table[@id='tableId']/tbody/tr[@type='a']/td[text()=1]",document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
doc.snapshotLength
boolean(/*/tr[@type='a']/td[. = 3])
b.trs.count{ |tr|
tr.attribute_value('type') == 'a' and tr.td(:text, '3').present?
} > 0