我正在尝试使用Xpath查找具有给定CSS类(.product)的所有<div>
。
<div class="product">
<a href="#product/1966740"><img class="cover_image" src="https://foobar.JPG" alt="foobar" title="foobar">
<h3>foobar</h3></a>
<div class="price">$66.00</div>
<div class="rrp">$219.11</div>
</div>
所以找到这些的Xpath相对简单:
//div[@class="product"]
但是,我只想找到那些没有售罄的产品。售罄的产品看起来像这样:
<div class="product">
<img class="availability" src="https://sold_out_tag.png" alt="sold out">
<a href="#product/1963553"><img class="cover_image" src="foobar.jpg" alt="foobar" title="foobar">
<h3>FooBar<h3></a>
<div class="price">$40.00</div>
<div class="rrp">$129.33</div>
</div>
我原以为我可以使用not(),并检查不包含<div>
且{alt}属性设置为“已售罄”的<img>
。
但是,以下内容无效:
//div[@class="product" and not([img[@alt="sold out"]])]
有关如何使这项工作的任何想法?
干杯, 维克多
答案 0 :(得分:0)
使用此XPath:
//div[@class="product" and not(img[@alt="sold out"])]
答案 1 :(得分:0)
你快到了。 []
子路径周围不需要img
:
//div[@class="product" and not(img[@alt = "sold out"])]
编写基本相同的东西的另一种方法是:
//div[@class="product" and not(img/@alt = "sold out")]
最后,由于class
属性可以包含多个类,因此通常最好使用contains()
来检查类:
//div[contains(concat(' ', @class, ' '), " product ") and not(img/@alt = "sold out")]
答案 2 :(得分:0)
你犯了一个小错误
// div [@ class =“product”] / img [@alt!=“售罄”]