【问题标题】:Find element with Selenium使用 Selenium 查找元素
【发布时间】:2021-11-04 19:41:45
【问题描述】:

我需要在亚马逊页面上找到 class="a-icon a-icon-addon couponBadge",例如 this。 如果类存在,我需要设置变量x == 0,如果它不存在,我需要设置变量x == 1。

我试过这段代码,但它不起作用。我该如何检查?

try:
    couponBadge = driver.find_elements_by_class_name("a-icon a-icon-addon couponBadge")
    if couponBadge != None:
        x == 0
    else:
        x == 1
except AttributeError:
    print("error")
    

【问题讨论】:

    标签: python selenium web-scraping


    【解决方案1】:

    您需要使用一个等号而不是两个等号来分配给一个变量。

    例如x = 1

    看起来 Selenium 的 get_elements_by_class_name 函数只支持输入单个类名,而不是您的示例中显示的多个,因此您可能需要查看 driver.find_element_by_css_selector()。

    例如driver.find_element_by_css_selector('.a-icon.a-icon-addon.couponBadge')

    【讨论】:

      【解决方案2】:

      请试试这个:

      couponBadge = driver.find_elements_by_class_name("a-icon a-icon-addon couponBadge")
      if couponBadge:
          x = 0
      else:
          x = 1    
      

      driver.find_elements_by_class_name 返回一个列表。
      如果存在与此定位器匹配的元素,则列表将非空,因此它将被解释为布尔值 True。否则将被解释为 False。
      此外,要将值分配给变量,您应该使用单个 =,而不是 ==。
      == 用于比较。
      此外,正如 CrunchyBox 所述,您应该使用find_element_by_css_selector,而不是get_elements_by_class_name。

      【讨论】:

        猜你喜欢
        • 2017-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-12
        • 1970-01-01
        • 2013-02-01
        相关资源
        最近更新 更多