如何使用cssSelector:nth- child(n)在Python Selenium中定位元素

问题描述 投票:0回答:1

我正在使用Python Selenium通过使用nth-child(n)来定位元素。

下面是我的html代码:

<div id="iopop" style="">
 <div style="" class="">
  <div id="iopoph" class="animated zoomIn" style=" ">
      <span style="" class="gs_hover"></span>
      <b class="in">FALAFEL</b>
      <a iid="128-73" class="itemsub lowend" price="2.99" name="FALAFEL (6)" style="">
          <b class="in">(6)</b>
          <b class="is"></b>
          <b class="ip">2.99</b>
          <b class="iq"></b></a>
      <a iid="128-74" class="itemsub lowend" price="4.99" name="FALAFEL (12)" style="">
          <b class="in">(12)</b>
          <b class="is"></b>
          <b class="ip">4.99</b>
          <b class="iq"></b>
      </a>
      <b class="is"></b>
      <b class="ip"></b>
      <b class="iq"></b>
  </div>
 </div>
</div>

现在我想通过使用nth-child(n)找到第一个a标签,所以我尝试了:

driver.find_element_by_css_selector('div#iopoph a:nth-child(2)').click()

但是有错误说:

NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"div#iopoph a:nth-child(2)"}
(Session info: chrome=79.0.3945.88)

任何朋友都能帮忙吗?

python selenium selenium-webdriver css-selectors webdriver
1个回答
0
投票

您很亲近,但您需要考虑以下几点:

  • div#iopoph将标识父节点,即

    <div id="iopop" style="">
    
  • 所以您需要遍历它的大子节点:

    <div id="iopoph" class="animated zoomIn" style=" ">
    
  • 要找到其子元素,可以使用以下Locator Strategies

    • 位于<a iid="128-73" class="itemsub lowend" price="2.99" name="FALAFEL (6)" style="">

      div.animated.zoomIn#iopoph a:nth-of-type(1)
      
    • 位于<a iid="128-74" class="itemsub lowend" price="4.99" name="FALAFEL (12)" style="">

      div.animated.zoomIn#iopoph a:nth-of-type(2)
      
© www.soinside.com 2019 - 2024. All rights reserved.