首页 > 解决方案 > 两个 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”部分是文件。我想打开文件夹并下载所有文件。

标签: pythonselenium

解决方案


您获取元素的长度,然后通过在循环内分配给它来更改元素。这是因为您对元素的双重使用。它应该是 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]

也就是说,如果第二个循环在第一个循环内。你的缩进不清楚。


推荐阅读