Python 如何找到不包含特定子元素的最后一个元素?

Python 如何找到不包含特定子元素的最后一个元素?,python,selenium,xpath,Python,Selenium,Xpath,因此,我想查找并单击产品页面上未销售的最后一个产品。我正在使用xPath单击产品,但我遇到了问题: 独家选择未售出的产品 选择最后一个未售出的产品 这是代码的一个示例: <li class =“product_container”> <a data-testid=“product__item”> <div class=“hover overlay”> <img>..</img>

因此,我想查找并单击产品页面上未销售的最后一个产品。我正在使用xPath单击产品,但我遇到了问题:

  • 独家选择未售出的产品
  • 选择最后一个未售出的产品
  • 这是代码的一个示例:

    <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>