Selenium Webdriver(Java) - 在XPATH中使用AND / OR条件

时间:2014-12-24 11:27:49

标签: selenium xpath

我有不同div的内部跨度的HTML:

<div class="test1">
    <div class="test2">
        <span title="Time">Today 11:12am</span>
    </div>
    <div class="test3">
        <span class="test4">Windows 7 64 bit</span>
        <span class="test5">Something</span>
    </div>
</div>
<div class="test6">
    <div class="test2">
        <span title="Time">Today 11:15am</span>
    </div>
    <div class="test3">
        <span class="test4">Windows 8 64 bit</span>
        <span class="test5">Something</span>
    </div>
</div>

我想通过选择不同范围内的特定文本来查找使用XPATH的元素。例如,我需要找到一个真实的元素:“今天”文本和“Windows 7”文本。

所以,我试过这句话:

//div[@class="test1"]/div[contains(span,'Today') and contains(span,'Windows')]

但这不起作用。我试过在里面使用OR,它只适用于一个真实的声明。

还有其他选择吗?

2 个答案:

答案 0 :(得分:1)

//div[.//span[contains(text(), 'Today')] and .//span[contains(text(), 'Windows 7')]]

会工作吗?您指定的[expression]字面上可以是任何内容,因此您可以在其中填充另一个元素搜索。 .字符也是关键,确保搜索范围限定为当前父级(即div而不是整个文档)。

答案 1 :(得分:0)

我想我找到了解决方案。它可以是:

//div[@class="test1"]/div[contains(span,'Today')]/following::div(span,'Windows')]