如果两个条件在xpath中匹配,我如何通过赋予优先级来选择我想要的那个

时间:2018-06-14 08:18:52

标签: xpath

 <Test> 
      <input id="next_step_button" value = "Done"/> 
      <Span class = "Hogwarts">Done<span/>
 </Test>

现在让我们假设这是我的xpath:
     (//*[@value='Done'] | //*[normalize-space(text())='Done'])

这将返回两个元素。并且在执行期间,它将选择第一个。 但是,我想只选择具体的。在这个例子中,第二个。

1 个答案:

答案 0 :(得分:0)

如果您的示例中的元素是兄弟姐妹,则此Xpath会执行您想要的操作

  • 如果元素值=完成,则选择元素,无论@ value = Done element position。
  • 如果没有包含value = Done的同级元素,则选择包含@ value = Done的元素。

'//*[(.="Done" and not(@value="Done")) or (@value="Done" and not(following-sibling::*[.="Done"] or preceding-sibling::*[.="Done"]))]'