【问题标题】:Selenium find multiple elements by class name [closed]Selenium 按类名查找多个元素 [关闭]
【发布时间】:2021-08-09 03:24:48
【问题描述】:
<div id="root">
    <div class="abc1">
        <div class="abc2">
            <a class="iwantthis"></a>
        </div>
        <div class="abc3">
            <a class="iwantthis"></a>
        </div>
    </div>
</div>

这是我拥有的页面的简化版本。我想选择所有类名为“iwantthis”的元素。我尝试了以下,但它可以找到任何元素。

divs = driver.find_elements_by_css_selector('iwantthis')

如果元素在一个 div 中,而该元素也在一个 div 中,我是否需要添加额外的参数?

【问题讨论】:

  • 在 CSS 选择中class 需要点在selector('.iwantthis')id 将需要#selector('#root') 等。所以你必须学习CSS。当您在 JavaScript 或文件.css 中使用 CSS 时,您也有这些规则

标签: python css selenium


【解决方案1】:

由于你的 css_selector 是基于类名的,你的表达式应该是:

divs = driver.find_elements_by_css_selector('.iwantthis')

divs = driver.find_elements_by_css_selector('a.iwantthis')

所以你只是在你的 css_selector 中遗漏了一个点 .
您还可以尝试以下 XPath:

divs = driver.find_elements_by_xpath('//a[contains(@class,'iwantthis')])

【讨论】:

  • 尽管变量名具有误导性,但有问题的元素具有标签 a,因此选择器不应寻找 div
  • 谢谢,使用 Xpath 的变体有效:)
  • 嗯,这意味着那里有不止一个 iwantthis 类名 :) 或者至少在某些情况下。
猜你喜欢
  • 2021-03-05
  • 2023-01-03
  • 2015-07-12
  • 2015-01-18
  • 2020-05-19
  • 2022-01-14
  • 1970-01-01
  • 2016-06-08
  • 2021-09-20
相关资源
最近更新 更多