【问题标题】:using nth-type or nth-child to select n element使用 nth-type 或 nth-child 选择 n 元素
【发布时间】:2022-01-09 00:29:25
【问题描述】:

:我可以使用什么 XPath 或 CSS 选择器来选择第二个 <div class="checkbox">

我试过用:

  • XPath - //div[@class="checkbox"][2]
  • CSS - div.checkbox:nth-child(2)

但是他们都没有使用 chrome 开发工具。

  • 我可以使用$x('//div[@class="checkbox"]') 查看所有三个复选框
  • 我可以使用$x('//div[@class="checkbox"]')[0] 指定第一个div.checkbox
  • 我可以使用$x('//div[@class="checkbox"]')[1] 指定第二个div.checkbox

这是我的 HTML 结构示例

<div class="fs">
    <div class="f">
        <div class="checkbox">
            <input type="radio" value="A">
            <label for="A">A</label>
        </div>
    </div>
    <div class="f">
        <div class="checkbox">
            <input type="radio" value="B">
            <label for="B">B</label>
        </div>
    </div>
    <div class="f">
        <div class="checkbox">
            <input type="radio" value="C">
            <label for="C">C</label>
        </div>
    </div>
</div>

【问题讨论】:

    标签: python selenium xpath css-selectors google-chrome-devtools


    【解决方案1】:

    与其尝试通过索引查找第二个元素,另一种可能性是通过 INPUT 上的值或包含在该 DIV 中的 LABEL 中的文本来获取它。几个 XPath 将是

    //div[@class='checkbox'][./input[@value='B']]
    //div[@class='checkbox'][./label[.='B']]
    

    【讨论】:

      【解决方案2】:

      您需要结果中的第二个元素。这可以通过使用下面来完成

      (//div[@class="checkbox"])[2]
      

      我认为 CSS 不允许从结果中选择这样的东西

      【讨论】:

        【解决方案3】:

        由于JeffCTarun Lalwani 已经建议了XPath 的做法,我想建议一种不同的方法。

        在 CSS 中,可以使用 :nth-child 选择器选择第二个 &lt;div class="f"&gt; 并从那里抓取嵌套的 div。 (&gt;可以省略)

        div.f:nth-child(2) > div.checkbox
        

        同样,以下在 XPath 中也有效:

        //div[@class='f'][2]/div[@class='checkbox']
        

        一个可以使用Attribute selectors使用CSS选择器根据属性值选择一个元素,但不幸的是,一个不能选择父元素。

        【讨论】:

        • 所以我不能直接选择带有类复选框的第二个 div?
        • @jacobcan118,如果你只想使用CSS选择器,直接选择元素,你不能直接选择第二个&lt;div class="checkbox"&gt;。但是,由于您使用的是 Selenium,您可以使用 driver.findElement*s*(By.Css("div.checkbox")) 获取所有 &lt;div class="checkbox"&gt;,然后选择您想要的 div。我不确定当您使用driver.findElements 时,元素的顺序是否正确保存在列表中。
        • @jacobcan118,如果您还有其他问题,请告诉我。如果我的回答有帮助,请投票/选择作为答案。谢谢!
        猜你喜欢
        • 1970-01-01
        • 2013-05-09
        • 1970-01-01
        • 1970-01-01
        • 2012-03-07
        • 2013-04-04
        • 1970-01-01
        • 2021-12-30
        • 2015-12-20
        相关资源
        最近更新 更多