python - 两个 for 循环 - 我如何运行
问题描述
我在 Python (selenium) 上运行它:
之后我可以成功运行一次迭代,它无法识别外部循环并显示错误。
elements = browser.find_elements_by_xpath('//*[@id="dtree0"]/div/a')
names=[]
for elem in elements:
names.append(elem.text)
print(names)
for id in range (2, 170):
for i in range(0, len(elements)):
elements = browser.find_elements_by_xpath ('//*[@id="dtree0"]/div/a')
elem = elements[i]
# # # only click the elements in the names list (this level)
if elem.text in names:
try:
elem.click()
except WebDriverException:
pass # ignore if elem is not clickable
# browser.find_elements_by_id("stree2").click()
my_id = "stree{}".format(id)
browser.find_element_by_id(my_id).click()
browser.find_element_by_xpath (
'/html/body/center[2]/form/table[1]/tbody/tr/td[3]/table/tbody/tr[5]/td[1]/a[1]/img').click ()
browser.find_element_by_xpath ('/html/body/center[2]/form/table[2]/tbody/tr/td[4]/input').click ()
browser.find_element_by_xpath ('/html/body/center/form/table[2]/tbody/tr/td[5]/a').click ()
sleep (5)
browser.find_element_by_xpath ('//*[@id="personas"]/b').click ()
browser.find_element_by_xpath('//*[@id="menu_personas"]/a[2]').click()
我该如何修改它,以便它在每次迭代时都运行这两个 for 循环。
错误如下:selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
我相信这是因为外部 for 循环不起作用,因此程序无法理解“Stree”部分。
文件夹部分是“元素”,“id”部分是文件。我想打开文件夹并下载所有文件。
解决方案
您获取元素的长度,然后通过在循环内分配给它来更改元素。这是因为您对元素的双重使用。它应该是 2 个不同的变量。
for id in range (2, 170):
for i in range(0, len(elements)):
elements_2 = browser.find_elements_by_xpath ('//*[@id="dtree0"]/div/a')
elem = elements_2[i]
也就是说,如果第二个循环在第一个循环内。你的缩进不清楚。
推荐阅读
- c++ - c++ 稍后保留指令
- macos - Flutter Mac OS Build Error 我该如何解决这个错误?
- r - R:加入两个数据帧会导致来自第二个数据帧的所有匹配列的 NA
- windows-server - 如何从命令/powershell 执行 WindowsServer2019 的 setup.exe 安装程序?
- graphics - ImageMagick -fuzz OR 重心裁剪与适合可扩展纵横比框的东西
- javascript - 与 Axios 反应无法将数组映射到列表
- mongodb - 想知道 MongoDB 与 Firebase 和 Flutter 的安全性
- ios - Vue 站点的 Webpack url-loader PDF 数据 URI 链接在 iOS 14 中停止工作
- java - Java EntityManager 抛出 NullPointerException
- c++ - 没有匹配的函数调用...(使用模板和指针)