Selenium 4.27.0+中如何替换废弃的WebElement.get_attribute()方法
如何在Selenium 4.27+中获取元素文本(替代已废弃的get_attribute("textContent"))
要实现原工具函数的功能,同时规避已废弃的WebElement.get_attribute(),可以通过执行JavaScript直接读取DOM元素的textContent属性来实现。因为WebElement.get_dom_attribute()仅能获取HTML标签中显式声明的属性,而textContent是DOM元素的固有属性,不属于标签属性范畴,所以直接调用JS是最直接的替代方案。
修改后的工具函数
from selenium.webdriver.remote.webelement import WebElement def text(e: WebElement) -> str: # 执行JS获取DOM元素的textContent text_content = e.parent.execute_script('return arguments[0].textContent;', e) # 保留原逻辑:优先可见文本,再取textContent,最后兜底 processed_content = text_content.strip() if text_content else None return e.text or processed_content or "n/a"
代码说明
e.parent.execute_script():通过元素所属的驱动执行JavaScript,arguments[0]对应传入的目标元素e,直接返回其textContent值- 保留原逻辑优先级:优先使用
e.text(仅获取元素的可见文本),当e.text为空时,使用textContent(包含元素的所有文本,包括隐藏内容) - 对
textContent做strip()处理,去除首尾空白字符(若不需要可自行移除)
这种方式完全符合Selenium 4.27+的版本要求,同时和原工具函数的功能完全一致。
内容的提问来源于stack exchange,提问作者jackal
相关产品推荐
相关产品推荐

