python - 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>
解决方案
替换emailLogin = browser.find_element_by_xpath('//*[@id ="identifierId"]')
到emailLogin = browser.find_elements_by_xpath('//*[@id ="identifierId"]')
推荐阅读
- django - Django 从 POST 请求中获得“无”
- keycloak - 无法在 keycloak 服务器中创建资源得到“错误”:“invalid_bearer_token”
- matplotlib - 使用 XeLaTeX 代替 LaTeX 在交互式窗口中格式化标签
- java - Cucumber JUnit 平台引擎。控制台故障
- html - 页脚不在底部,而是在页眉下方
- python - 即使使用 Fore.RESET,python 色彩中的颜色也不会取消
- arrays - 有没有办法从一个范围内索引/排列某些多个(非相邻)列?
- vue.js - 如果单击按钮,则切换 vuetify 图标
- python - scipy.optimize.minimize 与 mpi4py 在 SLURM 集群上非常慢
- python - 使用硒的脚本后Web服务器停止工作