select 1 个元素的 XPath(如果存在两个元素之一)

XPath to select 1 element if one of two exists

我想 select 一个元素,如果 2 个元素中有一个存在,同时将它用于 2 页

第 1 页(折扣价)

<div class="price">
  <span class="originalRetailPrice">,990.00</span>
  </div>
</div>
<div class="price">
      <span class="salePrice">,794.00</span>
</div>

或第2页(只有一个价格)

<div class="price">
  8.00
</div>

我用过 //span[@class="originalRetailPrice"] | (//div[@class="priceBlock"])[1] 但是我得到了两次价格

我要的是select第一个价格在class="originalRetailPrice"或者//div[@class="price"]/text()[1]

的时候

所以最后我想让 selection 在两个页面上工作

使用//获取<div class="price">内任意层的文本:

//div[@class="price"][1]//text()

结果:

Text=''
Text=',990.00'
Text=''

并过滤空文本:text()[normalize-space() and not(ancestor::a | ancestor::script | ancestor::style)]

//div[@class="price"][1]//text()[normalize-space() and not(ancestor::a | ancestor::script | ancestor::style)]

结果第 1 页:

Text=',990.00'

结果第 2 页:

Text='8.00'

你可以这样试试:

//span[@class="originalRetailPrice"] | //div[@class="price" and not(span[@class="originalRetailPrice"])]/text()[1]

第 2 部分(| 的右侧)select div[@class="price"] 元素仅当它没有子元素时 span[@class="originalRetailPrice"].