для l oop селен python запускает последний цикл - PullRequest
1 голос
/ 14 марта 2020

My for l oop переходит к последней части, и поскольку веб-странице нужен верхний цикл для открытия петель, чтобы другой цикл for мог работать, он не работает.

для x в browser.find_elements_by_class_name ('node'):

x.click()

for y in  browser.find_elements_by_class_name('dTreeNode'):

    y.click()

if len(browser.find_elements_by_class_name('node')) > 0:

   browser.find_element_by_class_name('node').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()
                browser.execute_script("window.history.go(-1)")

Это изображение:

enter image description here

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

Изображение HTML Текст:

enter image description here

1 Ответ

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

Кажется, что либо for y in browser.find_elements_by_class_name('dTreeNode'): возвращает пустой элемент, либо щелчок выполнен по неверному элементу, т.е. элемент не запрограммирован на получение щелчка.

В любом случае -

Первое, что нужно - Пожалуйста, проверьте, выполняет ли ваш первый l oop код или нет.

for y in  browser.find_elements_by_class_name('dTreeNode'):
    y.click()
    print('Clicked the element') #just for debugging

Затем посмотрите, возвращен ли элемент или нет.

Во-вторых, я вижу, вы используете абсолютный xPath. Можете ли вы преобразовать его в относительный xPath. Обратитесь к Учебникам XPath

Если вам нужна помощь по xPath, обновите свой вопрос и HTML фрагмент расширенного дерева.

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