python - 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 文本的图像:
解决方案
似乎要么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 片段。
推荐阅读
- excel - 单击复选框仅适用于第一个实例 VBA Selenium(元素单击被拦截)
- list - 随机分配一个项目到一个列表
- translation - Lokalise:如何为特定分支使用`include_pids`
- ansible - jinja 模板中的 Ansible 换行符
- php - 使用 file_get_contents 发出 POST 应用程序/json 请求
- scala - 将秒转换为 hhmmss Spark
- python - 构造函数中的类变量和实例变量
- python - 如果 A 列中的值不为空,则在 B 列中插入特定字符串。Python / Pandas
- python-3.x - 将 df 中的所有列与 pandas (itertools) 结合
- c++ - 以有效的方式查找 Circlepath 上的每个网格单元