Python Selenium找到标签但类不可见,获取svg下text文本为空问题求助
问题解决思路
1 修正代码逻辑错误
你当前代码中等待的元素类名是form-with-text,但从你给出的页面结构可见,text标签的实际类名为form-win-text,类名不匹配会直接导致等待逻辑失效,后续元素操作自然无法正常执行。
2 修正SVG元素文本获取方式
SVG属于XML命名空间下的特殊元素,Selenium默认的.text属性无法正常读取SVG内部text标签的文本内容,需要改用get_attribute('textContent')方法来提取内容。
3 优化元素定位逻辑
你当前使用的层级过长的相对XPath稳定性极差,页面结构出现微小变动就会定位失败,可以直接通过特征属性批量定位目标元素,无需逐层嵌套查找。
修正后参考代码
# 原有导入、driver初始化、等待对象配置保留即可 # 直接批量定位所有目标text元素 target_texts = wait.until(EC.presence_of_all_elements_located((By.XPATH, "//div[contains(@class,'form-box flex-xs-no-grow')]//text[contains(@class,'form-win-text')]"))) for text_ele in target_texts: # 用textContent获取SVG内的文本内容 print(text_ele.get_attribute('textContent'))
补充注意事项
- 如果调整后还是无法获取内容,先检查目标元素是否在iframe内,如果是需要先切换到对应iframe再执行定位操作
- 可以适当增加等待时长,确认内容是否是页面渲染延迟导致的未加载完成
内容的提问来源于stack exchange,提问作者Samson Bitrus
相关产品推荐
相关产品推荐

