【问题标题】:find_elements_by_class_name is not working for some classesfind_elements_by_class_name 不适用于某些类
【发布时间】:2021-07-30 06:40:12
【问题描述】:

我是使用 Python 的 Selenium 新手。我进行了一些搜索,但仍然对 find_elements_by_class_name 的用法感到困惑,这不起作用,如附图所示。

  1. items = browser.find_elements_by_class_name('prod_name'),打印每个项目ok。
  2. items = browser.find_elements_by_class_name('isImpressTs.isImpress'), return 0 什么都不显示,也没有错误。
  3. items = browser.find_elements_by_class_name('isImpressTs isImpress'), return 0 什么都不显示,也没有错误。
  4. items = browser.find_elements_by_class_name('isImpressTs'), return 0 什么都不显示,也没有错误。
  5. items = browser.find_elements_by_xpath("/html/body/div1/div[2]/div1/div[3]/div[2]/dl/dd1/dl[2 ]/dd[3]"),打印项目ok。

我不知道如何使上述 2,3 或 4 起作用。 XPath 有效,但如何通过通配符而不是指定 dd[3] 出现来查找所有元素?

任何帮助表示赞赏。

extract info from this page in html

【问题讨论】:

  • UI 的屏幕截图很棒,代码或 HTML 的屏幕截图则不然。请阅读为什么a screenshot of code/HTML is a bad idea。粘贴代码/HTML 并正确格式化。
  • 2 和 3 不是类名... 2 是 CSS 选择器(无效),3 是两个类名,“isImpressTs”和“isImpress”。我不知道为什么 4 在没有看到页面的情况下不起作用。这可能是时间问题...您是否尝试过添加等待?您是否尝试过在浏览器中测试这些定位器? $$() 表示 CSS 选择器,$x() 表示 XPath。

标签: python css selenium selenium-webdriver css-selectors


【解决方案1】:

根据定义:

def find_elements_by_class_name(self, name):
    """
    Finds elements by class name.

    :Args:
     - name: The class name of the elements to find.

    :Returns:
     - list of WebElement - a list with elements if any was found.  An
       empty list if not

所以,这个函数返回一个具有相同类名的列表。

2-4 ) 更改为items = browser.find_elements_by_css_selector('.isImpressTs.isImpress') 因为您正在寻找几个类名,而不是一个。 . 是定位类的语法。

5 ) 不要使用这样的定位器,它们不稳定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多