【问题标题】:instead of showing information about the tags ('li' - tags) it throws the AttributeError而不是显示有关标签('li' - 标签)的信息,它会抛出 AttributeError
【发布时间】:2020-12-02 07:09:02
【问题描述】:

代码

  1 main = WebDriverWait(driver, 6).until(EC.presence_of_element_located((By.CLASS_NAME, "global-nav__nav")))

  2 lists = main.find_elements_by_class_name("global-nav__primary-items")

  3 my_network = lists.get_property('li')[0].keys()

  4 my_network

错误

AttributeError: 'list' 对象没有属性 'get_property'

请提供更多关于使用 selenium 提取列表信息的信息

【问题讨论】:

  • 编辑您的问题(“tags”、“tage”)。你试过调试器吗?
  • 显然lists是一个内置类型list的对象。如果你想申请get_property,你需要做类似lists[0].get_property(...)的事情。但是由于您的问题中没有足够的信息,这可能无法解决您的问题
  • 你是跳过代码还是更新了错误?第 3 行创建 lists,第 4 行是 lists - 但你的错误是 list...

标签: python html selenium selenium-webdriver beautifulsoup


【解决方案1】:

这一行

lists = main.find_elements_by_class_name("global-nav__primary-items")

正在返回与该标识符匹配的所有元素。你会得到一个列表。

然后,当你这样做时:

my_network = lists.

您访问的不是元素,而是列表本身。

你可以这样做:

my_network = lists[0].get_property('li')[0].keys()

[0] 是列表中的第一项(假设您的行的其余部分有效...乍一看我不确定其余部分 .get_property('li')[0].keys()

或者你可以遍历所有:

for x in lists
    print(x.text) # do your action here

或者,如果只有 1 个元素与您的类匹配,您可以使用:

main.find_element_by_class_name("global-nav__primary-items")

注意这是find_element... vs find_elements... 这不会返回一个列表,而是一个单独的 we 元素。

如果您可以围绕您的问题分享 html 代码,通常有人可以帮助您识别和编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 2013-08-21
    • 2011-12-24
    相关资源
    最近更新 更多