selenium XPath用于验证多个TD以筛选1个唯一树

vlf7wbxs  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(151)

我需要验证<tr>是否存在,该<tr>包含3个具有特定值的<td>
页面上有100+<tr>个标签。我正在尝试使用1XPath过滤它们。
例如,如果我过滤这3个值上的所有<tr>
//td[contains(text(),'Belgium')]
//td[contains(text(),'be-stelara-cd-uc')]
//td[contains(text(),'2022-07')]
它应该返回包含这些<td>的1<tr>
因此,我需要做的是根据前面的XPath过滤每个XPath,只留下一个唯一的剩余部分。我遇到了|并集运算符,这几乎就是我想要的,但是我不想组合结果,而是想要排除它们。
我尝试了以下XPath:
//tr[contains(td/text(), 'Belgium') and contains(td/text(), 'be-stelara-cd-uc') and contains(td/text(), '2022-07')]
超文本标记语言示例:
https://prnt.sc/qcmEu0zSvu3S
编辑:
//tr[contains(td/text(), 'Belgium') and contains(td[2]/text(), 'be-stelara-cd-uc') and contains(td[3]/text(), '2022-07')]
这是可行的,我没有意识到运输署也会检查订购情况。如果可能的话,我想调整这个问题,以提出一个普遍的解决方案,考虑到秩序不能得到保证。

weylhg0b

weylhg0b1#

如果您可以依赖图片中的数据,即:没有空格,也没有超过所示的其他内联元素,您可以尝试这样做:

//tr[td[text()= 'Belgium'] and td[text()= 'be-stelara-cd-uc'] and td[contains(text(), '2022-07')]]

如果您想要特别确定并想要过滤不需要的空间,您可以尝试以下操作:

//tr[td[text()[normalize-space()= 'Belgium']] and td[text()[normalize-space()= 'be-stelara-cd-uc']] and td[contains(text(), '2022-07')]]

如果可以显示更多内容,只需将.contains()一起使用,如下所示:

//tr[td[contains(., 'Belgium')]and td[contains(., 'be-stelara-cd-uc')]and td[contains(., '2022-07')]]

要完成测试,还可以测试tr的文本内容,如下所示:

//tr[contains(., 'Belgium') and contains(., 'be-stelara-cd-uc') and contains(., '2022-07')]
2fjabf4q

2fjabf4q2#

使用以下任何xpath标识tr

//tr[.//td[contains(., 'Belgium')]][.//td[contains(., 'be-stelara-cd-uc')]][.//td[contains(., '2022-07')]]

//tr[contains(., 'Belgium') and contains(., 'be-stelara-cd-uc') and contains(., '2022-07')]

相关问题