首页 > 解决方案 > TypeError:使用 Selenium 和 Python 遍历 HTML 中的有序列表时,“FirefoxWebElement”对象不是可迭代错误

问题描述

我正在尝试编写一个脚本,让我在 Google Classroom 上完成当天的作业,并且有一个下拉菜单,其中包含“ol”和“/ol”标签内的所有不同作业。当我尝试通过它并将工作放入带有名称和类的字典中时,我收到错误:

TypeError: 'FirefoxWebElement' object is not iterable

而且我不知道为什么,因为我认为列表应该是可迭代的。

(有代码):

def get_work(schoolUser, schoolPassword):

    browser = webdriver.Firefox()
    browser.get("https://classroom.google.com/u/0/h")
    browser.maximize_window()
    

    emailLogin = browser.find_element_by_xpath('//*[@id ="identifierId"]')
    emailLogin.send_keys(schoolUser + Keys.ENTER)
    
    password =  WebDriverWait(browser,10).until(EC.element_to_be_clickable((By.XPATH,"//input[@name='password']")))
    passwordLogin.send_keys(schoolPassword + Keys.ENTER)
    browser.implicitly_wait(123)

    browser.find_element_by_class_name("R06fGe").click()  #Work To Do

    noDueDateList = browser.find_element_by_class_name("e2urcc")
    homework = browser.find_element_by_tag_name("li")
    work = {}
    for homework in enumerate(noDueDateList):
        work["{0}".format(homework.text): "a"]

(顺便说一句,我不知道如何使用字典,所以字典的最后一部分可能是错误的,但我会弄清楚的。)

还有一个过于简化的 HTML 版本:

<div class>
    <ol class="classname" etc...>
        <li class = "classname1" insert bunch of attributes here>
        <li class = "classname2" insert bunch of attributes here>
        <li class = "classname1" insert bunch of attributes here>
    </ol>
</div>

标签: pythonseleniumselenium-webdrivergeckodriverselenium-firefoxdriver

解决方案


替换emailLogin = browser.find_element_by_xpath('//*[@id ="identifierId"]')emailLogin = browser.find_elements_by_xpath('//*[@id ="identifierId"]')


推荐阅读