python - Python Selenium 表迭代不起作用
问题描述
我是 Python Selenium 的新手,我正在尝试在 iframe 中自动执行一些网页抓取。我正在尝试进入一个表格(在 iframe 内部)并单击一个链接。一切正常,但是在引用表列时,代码似乎在每次迭代中都坚持第一列的值。这是我的一些代码:
1 table = driver.find_element_by_xpath("//table[@class='table table-striped v-align-middle']")
2 rows = table.find_elements_by_css_selector("tr")
3 for row in rows:
4 print(row.text)
5 print(row.find_element_by_xpath("//td[3]").text)
6 row.find_element_by_xpath("//td[6]//a[@href]").click()
第 4 行让我获得了每一行的全部文本,完美运行。这只是一条测试线。第 5 行每次都为我获取第一行的第三列值。所以不工作。第 6 行,就像第 5 行一样,每次都点击第 6 列但第一行的链接。所以再次,不工作
我认为 xpath 上一定有一些东西我做得不对?谢谢!
我真的不明白为什么第 4 行迭代很好,但第 5 行和第 6 行每次都坚持第一列的值。
解决方案
当使用 XPath 并从给定元素开始搜索时,您必须.
在定位器的开头添加 a,例如
print(row.find_element_by_xpath(".//td[3]").text)
^ note the period
推荐阅读
- python - 如果使用“in”命令时没有输入数据,如何使python代码返回false
- c# - 以同步方式更新多个 UI 控件的策略
- nlp - 无法在 Brat 中注释多行
- python - jupyter笔记本中的环境变量?(osx)
- python - SQLAlchemy 未定义变量导入,数据库会话
- javascript - Rails 5:如何在部分 html 视图中加载 Datatable javascript
- fullcalendar - 如何在单日视图的列标题中显示日期?
- java - 获取基于歌曲专辑的歌曲列表
- cordova - WKWebView 在 Android 上导致问题(无法加载本地模板)
- c++ - 为什么使用 long int 而不是 int 可以使我的代码工作?