当前位置: 首页 > 知识库问答 >
问题:

Selenium在python中按类名查找元素

阴阳
2023-03-14

如何过滤具有相同类的元素?

<html>
  <body>
    <p class="content">Link1.</p>
  </body>
</html>
<html>
  <body>
    <p class="content">Link2.</p>
  </body>
</html>

共有3个答案

冯祺
2023-03-14

最简单的方法是使用find_element_by_class_name('class_name')

柳梓
2023-03-14

根据HTML:

<html>
    <body>
    <p class="content">Link1.</p>
    </body>
<html>
<html>
    <body>
    <p class="content">Link2.</p>
    </body>
<html>

两(2)

因此,要过滤具有相同类别的元素,即内容,并创建一个列表,您可以使用以下任一定位器策略:

>

  • 使用class_name

    elements = driver.find_elements_by_class_name("content")
    

    使用css\u选择器

     elements = driver.find_elements_by_css_selector(".content")
    

    使用xpath

    elements = driver.find_elements_by_xpath("//*[@class='content']")
    

    理想情况下,要单击该元素,您需要引导WebDriverWait查看所有元素的可见性(),您可以使用以下任一定位器策略:

    >

  • 使用CLASS_NAME

    elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "content")))
    

    使用CSS_SELECTOR

    elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".content")))
    

    使用XPATH

    elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//*[@class='content']")))
    

    注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

    您可以在以下内容中找到一些相关讨论:

    • 如何使用Selenium和Python通过类名识别元素,即使有多个元素具有相同的类名
    • 在Selenium和Java中找不到使用className的元素
    • 在selenium python中,按类名称查找元素的属性是什么
    • 如何通过Selenium和Python使用classname属性定位最后一个web元素

  • 祁乐邦
    2023-03-14

    您可以使用“按类查找元素”名称,尝试使用class=“content”获取所有元素的列表:

    a = driver.find_elements_by_class_name("content")
    

    然后你可以点击你正在寻找的链接。

     类似资料:
    • 我试图自动登录到网站https://opensource-demo.orangehrmlive.com/web/index.php/auth/login使用硒通过它给出了一个错误 selenium.common.exceptions.NoSuchElementException: 消息: no suchElement: 无法找到元素: {“method”:“css selector”,“selec

    • 问题内容: 我有一个React组件。一些元素将通过子元素插入。其中一些元素将具有特定的类名。如何在最外层的Component中获得这些DOM节点的列表? 我想知道的是,在我的组件中插入了多少个类名称为“ snap”的元素。 问题答案: 您可以使用。即使文档鼓励使用 ref ,我们也要看看它是如何工作的: findDOMNode() 如果此组件已安装到DOM中,则将返回相应的本机浏览器DOM元素。此

    • 问题内容: 我正在将selenium与python配合使用,现在我想按其ID名称的一部分来定位元素,该怎么办? 例如,现在我已经找到了一个ID为 coption5的商品 : 无论如何,我只能使用 coption 来定位此元素吗? 问题答案: 要查找您所在的元素: 要仅通过使用 coption 来定位此元素,可以使用以下定位器策略之一: 使用和: 使用和: 使用和(开头为通配符): 使用和(包含通配

    • 问题内容: 我无法使用解析具有属性的元素。代码看起来像这样 脚本完成后的同一行出现错误。 如何摆脱这个错误? 问题答案: 你可以使用BS3优化搜索以仅找到具有给定类的那些div:

    • 问题内容: 我正在寻找网站。在检查元素中看到以下内容: 需要获取并按标题单击元素。像这样: 但是通过标题。 问题答案: 就像巴拉克·马诺斯(Barak Manos)所说,答案是: 以[0]结尾的情况是列表。

    • 我正在编写一个Python程序,该程序使用Selenium导航到高级搜索页面上的搜索框中并在搜索框中输入信息。本网站使用 Javascript,每次加载网站时,每个搜索框的 ID 和名称都会略有变化,但类名保持不变。类名经常被重用,所以我的目标是使用然后通过该列表编制索引。 例如,一个框的类名是 ,但我不能使用它,因为 selenium 认为它是一个复合类名并抛出一个错误。如果我只使用它的一部分,