首页 > 解决方案 > for loop selenium python 运行最后一个循环

问题描述

我的for循环到了最新的部分,因为网页需要打开上面的for循环才能让其他for循环运行,所以不起作用。

对于 browser.find_elements_by_class_name('node') 中的 x:

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)")

这是图像:

在此处输入图像描述

本质上,当页面返回时,它找不到最后一个循环类并显示错误,因为只有单击前一个元素才能找到该元素。但是我如何在 for 循环中做到这一点?

HTML 文本的图像:

在此处输入图像描述

标签: pythonselenium

解决方案


似乎要么for y in browser.find_elements_by_class_name('dTreeNode'):返回一个空元素,要么在错误的元素上执行点击,即元素没有被编程为接收点击。

无论哪种情况——

第一件事- 请检查您的第一个循环是否执行代码。

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

然后查看元素是否返回。

其次 - 我看到您使用的是绝对 xPath。你能把它转换成相对的xPath吗?请参阅XPath 教程

如果您需要有关 xPath 的帮助,请更新您的问题和扩展树的 HTML 片段。


推荐阅读