Selenium Python查找文本对应父元素并获取已删除文本问题咨询
Selenium多级DOM节点文本获取方案
你的现有实现通过链式调用DOM节点属性逐层遍历拿到目标文本,代码如下:
qr = driver.find_elements_by_tag_name('h1')[1].parentElement.parentElement.parentElement.lastChild.firstChild.firstChild.childNodes[0].children[1].children[0].lastChild.lastChild.textContent print(qr)
注意:该硬编码节点层级的写法稳定性极差,页面DOM结构只要有一处调整,整条路径就会失效,推荐优先使用更稳定的定位方式替代
优化建议
- 直接通过Xpath的祖先、后代定位语法一步拿到目标元素,不需要手动逐层遍历节点,示例代码如下:
from selenium.webdriver.common.by import By # 先定位第二个h1元素,再通过相对xpath找目标节点 target_ele = driver.find_elements(By.TAG_NAME, 'h1')[1].find_element(By.XPATH, './ancestor::*[3]//*[last()]/*[1]/*[1]/*/*[2]/*[1]/*[last()]/*[last()]') qr = target_ele.text print(qr)
- 可以直接在浏览器开发者工具中拷贝目标元素的全量Xpath,一步完成定位,代码更简洁易维护
- Selenium4 已经废弃
find_elements_by_tag_name这类旧API,推荐统一使用find_elements(By.定位方式, 定位值)的写法
内容的提问来源于stack exchange,提问作者mohammad adel
相关产品推荐
相关产品推荐

