【问题标题】:How to choose some elements by the same class?如何选择同一类的一些元素?
【发布时间】:2019-06-13 12:19:23
【问题描述】:

我需要选择同一个类的一些元素。

html 伪代码:

<div class="a">
    <div class="2">
    ...
    ...
    ...
        <div class="3">
            <div class="4">
            <div class="4">
<div class="b">
    <div class="2">
    ...
    ...
    ...
        <div class="3">
            <div class="4">
            <div class="4">

python 代码:

list = driver.find_elements_by_xpath("//div[@class='a']/div[@class=...]/div[@class='2']/div[@class='3']")

我想从以class="b" 开头的分支中选择带有class="4" 的元素。使用我的代码,我得到空长度的列表。我尝试了通过 css-selector 查找的变体,但得到了相同的结果。没有错误或异常。

【问题讨论】:

  • 提示:所有浏览器现在都有一个可用的 XPath 表达式评估器,这使得测试 XPath 表达式比通过 Python 应用程序更容易。
  • 请在此问题中添加“xpath”标签。

标签: python selenium selenium-webdriver xpath xpath-2.0


【解决方案1】:

试试下面的xpath

//div[@class='b']//div[@class='4']

list = driver.find_elements_by_xpath("//div[@class='b']//div[@class='4']")

【讨论】:

    【解决方案2】:

    您可以使用descendant XPath ax 来仅选择具有class attributeb 的div 的子级

    类似:

    //div[@class='b']/descendant::*/div[@class='4']
    

    应该为您解决问题:

    更多信息:

    【讨论】:

    • 你可能没有正确恢复标签树。
    • 非常感谢您的宝贵时间。
    【解决方案3】:

    具体来说,你的情况是这样解决的 xPath:

    //*[@class = "b"]//*[@class = "4"]
    

    或者指向div元素:

    //div[@class = "b"]//div[@class = "4"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-11
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      相关资源
      最近更新 更多