带有text()的Xpath包含但不包含其他文本,不区分大小写

时间:2016-12-29 16:37:09

标签: xpath contains translate

我正在尝试根据文本找到一个元素(我知道,我知道),并且因为有两个标签包含一些相同的单词,我必须能够通过某些单词找到它但确保它不包括其他词。最重要的是,它需要不区分大小写。

示例:我尝试找到并单击与文本Some Text关联的复选框,但不是Some Some Too。 ID和名称以及订单(有时'有些文字'是第一个,有时'有些文字太多'是第一个)可能因页面而异,具体取决于显示的内容,所以我不能依靠它找到正确的复选框。

<td style="padding-bottom: 2px"><input id="c_58" style="padding-left: 3px; background-color: rgb(255, 255, 255);" name="c_58" value="[dbo].[table].[Field]" type="checkbox"><label for="c_59" style="padding-left: 3px;">Some Text Too</label></td>

<td style="padding-bottom: 2px"><input id="c_59" style="padding-left: 3px; background-color: rgb(255, 255, 255);" name="c_59" value="[dbo].[table].[Field]" type="checkbox"><label for="c_59" style="padding-left: 3px;">Some Text</label></td>

我的工作原理如下:     //*[*[text()[contains(translate(., 'SOME TEXT','some text'), 'some text')]]]

这会找到'Some Text'的元素,但也会找到'Some Text Too'的元素。由于有时页面会以不同的顺序呈现元素,因此我需要确保我只找到'Some Text'而不是'Some Text Too'

我试过了:     //*[*[text()[contains(translate(., 'SOME TEXT','some text'), 'some text') and not(contains(translate(., 'TOO', 'too'), 'too'))]]]

但这不是在页面上找到任何元素。

1 个答案:

答案 0 :(得分:0)

Abdou你是对的 - 我的情景更像是:

label 1 : Some Text Here Too
label 2 : Some Texts Here

所以有了这个术语&#34; Some Text Here&#34;由于不匹配的&#34;文本&#34;无法找到第二个标签。我使用以下方法解决了这个问题:

//*[*[text()[contains(translate(., 'SOME','some'), 'some') and contains(translate(., 'TEXT','text'), 'text') and contains(translate(., 'HERE','here'), 'here') and not(contains(translate(., 'TOO','too'), 'too'))]]]

//*[*[text()[contains(translate(., 'SOME','some'), 'some') and contains(translate(., 'TEXT','text'), 'text') and contains(translate(., 'HERE','here'), 'here') and contains(translate(., 'TOO','too'), 'too')]]]