две петли - как мне бегать - PullRequest
0 голосов
/ 30 марта 2020

Я запускаю это на Python (селен):

Я могу запустить это успешно в течение одной итерации, после этого он не распознает внешний l oop и выдает ошибку.

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: Сообщение: элемент не взаимодействует

Я полагаю, это потому, что часть "Stree" не понимается программой, так как external для l oop не работает.

Веб-страница выглядит следующим образом: enter image description here

Часть папок - это "elements" и "id" часть файлов. Я хочу открыть папки и скачать все файлы.

1 Ответ

0 голосов
/ 30 марта 2020

Вы получаете длину элементов, а затем изменяете элементы, присваивая ей значение внутри l oop. Это из-за вашего двойного использования элементов. Это должны быть 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]

То есть, если второй l oop находится внутри первого l oop. Ваш отступ неясен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...