Selenium通过XPath选择表格列失效,循环重复问题求助
问题解决:Selenium遍历表格列元素时重复获取内容
你的代码出现循环重复的核心原因是:子元素查找的XPath使用了全局搜索语法。当你在column.find_element里用//div[1]/a这种写法时,//会从整个HTML文档的根节点开始匹配元素,而不是限定在当前column元素的子节点范围内,所以不管遍历到哪个table-columns元素,都会拿到页面中第一个符合条件的子元素,导致输出重复。
修正后的代码
把XPath改为相对路径(开头加.),表示从当前column元素的上下文开始搜索:
columns = driver.find_elements(By.XPATH, "//div[@class='table-columns']") print(len(columns)) for column in columns: # 使用.//开头的相对路径,限定在当前column元素内查找 cell1 = column.find_element(By.XPATH, ".//div[1]/a") cell2 = column.find_element(By.XPATH, ".//div[2]") cell3 = column.find_element(By.XPATH, ".//div[3]") cell4 = column.find_element(By.XPATH, ".//div[4]") print(cell1.get_attribute('href'), cell2.text, cell3.text, cell4.text)
补充说明
.//是Selenium中相对路径的写法,代表从当前元素的子节点或后代节点中查找匹配的元素- 如果子元素是直接子节点,也可以用
./div[1]/a(./表示当前元素的直接子节点),效果和.//在这个场景下一致,但.//更灵活,能匹配所有后代节点
内容的提问来源于stack exchange,提问作者lucky1928
相关产品推荐
相关产品推荐

