【问题标题】:Selenium Python css selector by class doesn't workSelenium Python css 按类选择器不起作用
【发布时间】:2022-01-21 03:05:36
【问题描述】:

我有 4 种方法来定位某个元素并想要点击它:

DOM 是:

<div class="ui dropdown selection" tabindex="0">

我通过四种方式定位这个元素:

(By.XPATH, "//div[@class='ui dropdown selection']")
(By.CSS_SELECTOR, "[class='ui dropdown selection']")
(By.CSS_SELECTOR, ".ui dropdown selection")
(By.CLASS_NAME, "ui dropdown selection")

我只是点击元素

方法 1 和 2 工作,测试没问题 - len(element) 是 1

方式 3 和 4 不起作用:NoSuchElementException: 消息:没有这样的元素:无法找到元素:{"method":"css selector","selector":".ui dropdown selection"} - 和 len(元素)为 0 (等待没有帮助,方式 1、方式 2 根本不需要等待)

你能告诉我为什么 Way 3 和 Way 4 失败了吗?

【问题讨论】:

    标签: selenium css-selectors


    【解决方案1】:

    在 CSS 选择器中为同一个标签使用多个类名时,它们必须用点而不是空格分隔。这是表达第三个的正确方法:

    (By.CSS_SELECTOR, ".ui.dropdown.selection")

    (By.CSS_SELECTOR, "div.ui.dropdown.selection").

    至于第四个,By.CLASS_NAME 不能与多个类名组件一起使用。您必须选择一个,但由于这可能不会为您提供唯一的选择器,因此您最好使用其他方法之一来形成选择器。

    【讨论】:

    • 不工作请看下面的答案
    【解决方案2】:

    @迈克尔

    (By.CSS_SELECTOR, ".ui.dropdown.selection") 
    (By.CSS_SELECTOR, "div.ui.dropdown.selection")
    

    两者都不起作用 - selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element

    但请注意只有 1 个元素,因为这样可以:

    (By.XPATH, "//div[@class='ui dropdown selection']")
    

    len(element) = 1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-04
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      • 2013-01-13
      • 1970-01-01
      相关资源
      最近更新 更多