Python Selenium获取元素父元素时报AttributeError错误如何解决?
报错原因
你调用了Selenium的find_elements_by_xxx(末尾带s的复数形式)方法获取目标元素,返回结果是匹配到的WebElement对象列表,列表类型本身没有find_element_by_xpath方法,只有单个WebElement实例才能调用该方法查找父元素。
解决方案
- 方案1:遍历返回的元素列表,对每个单独元素执行查找父元素的操作,适合单条XPath规则匹配到多个元素的场景,示例修改代码如下:
# 原错误代码逻辑示例 # elems = driver.find_elements_by_xpath("你的目标元素XPath规则") # parent_elem = elems.find_element_by_xpath('..') # 修改后代码逻辑 elems = driver.find_elements_by_xpath("你的目标元素XPath规则") for elem in elems: # 对单个元素查找父节点 parent_elem = elem.find_element_by_xpath('..') # 原有的元素信息提取、写入output1.csv的逻辑放在循环内执行
- 方案2:如果你确认单条XPath规则只会匹配到1个元素,可以直接把
find_elements_by_xpath改为单数形式find_element_by_xpath,直接得到单个WebElement对象,无需遍历:
elem = driver.find_element_by_xpath("你的目标元素XPath规则") parent_elem = elem.find_element_by_xpath('..')
- 版本兼容提示:Selenium 4.3及以上版本已经移除了
find_element_by_xpath这类旧API,建议替换为统一的新API写法,避免后续版本报错:
from selenium.webdriver.common.by import By # 单元素查找新写法 elem = driver.find_element(By.XPATH, "你的目标元素XPath规则") # 父元素查找新写法 parent_elem = elem.find_element(By.XPATH, '..')
内容的提问来源于stack exchange,提问作者aurnindo
相关产品推荐
相关产品推荐

