Python 如何找到不包含特定子元素的最后一个元素?
因此,我想查找并单击产品页面上未销售的最后一个产品。我正在使用xPath单击产品,但我遇到了问题:Python 如何找到不包含特定子元素的最后一个元素?,python,selenium,xpath,Python,Selenium,Xpath,因此,我想查找并单击产品页面上未销售的最后一个产品。我正在使用xPath单击产品,但我遇到了问题: 独家选择未售出的产品 选择最后一个未售出的产品 这是代码的一个示例: <li class =“product_container”> <a data-testid=“product__item”> <div class=“hover overlay”> <img>..</img>
<li class =“product_container”>
<a data-testid=“product__item”>
<div class=“hover overlay”>
<img>..</img>
</div>
</li>
<li class=“product_container”>
<a data-testid=“product__item”>…</a>
<div class=“hover overlay”>
<div data-testid=“product__sold”>Sold</div>
</div>
</li>
..
…
出售
第一个列表标签是未售出的产品,第二个列表标签是已售出的产品(表示“已售出”的悬停覆盖)
到目前为止,我可以找到满足a/[@data testid=“product\uu item”]
的最后一个加载元素,但我所做的每一次尝试都无法找到不包含div/[@data testid='product\uu selled']
的元素
我提前向您道歉,因为我的写作和术语已关闭,这是我尝试的第一个脚本。您可以搜索没有与
data testid=“product\u selled”
基于此xml:
<li class="product_container">
<a data-testid="product__item">...</a>
<div class="hover overlay">
<img>..</img>
</div>
</li>
<li class="product_container">
<a data-testid="product__item">...</a>
<div class="hover overlay">
<div data-testid="product__sold">Sold</div>
</div>
</li>
结果是:
<a data-testid="product__item">...</a>
。。。
这将选择上次加载的产品,不管它是否已售出。@SebastianChu此xpath基于您发布的html代码片段。“not”似乎无效。它仍然只找到最后一个元素[@data testid=“product\uu item”],但它有一个已售出的兄弟元素。这有助于识别第一个“售出”的产品,但我不确定“not”函数应该放在哪里//a[last()][@data testid=“product\uu item”]//child::div[@data testid=“product\uu selled”]
这是一个小错误,但是你的答案没有回答我的问题,现在我的答案全是拼写错误,谢谢你。塞巴斯蒂安库,请接受这个答案,如果我能用这个//a[@data testid=“product\uu item”]//child::div[@data testid=“product\uu selled”]
来识别售出的商品,那就好了。但是我想选择最后一个没有div的元素。
//li[not(descendant::div[@data-testid='product__sold'])][position()=last()]/a
<a data-testid="product__item">...</a>