Python Selenium如何获取指定class元素的文本并打印到控制台
问题解决说明
现有代码存在两处错误
- 方法调用不符合规则:
find_element_by_class_name()仅支持传入单个class值,不需要加.前缀,也不能同时传入多个以.分隔的类名,你当前的写法是CSS选择器的语法,不适用于该方法 - 属性调用错误:获取元素文本的
text是WebElement对象的固有属性,不是可执行方法,不需要加末尾的()
正确实现方案
方案1:使用CSS选择器匹配多类元素(推荐,匹配精度更高)
# 首先导入By定位类 from selenium.webdriver.common.by import By profile_name = driver.find_element(By.CSS_SELECTOR, "._7UhW9.fKFbl.yUEEX.KV-D4.fDxYl").text print(profile_name)
方案2:使用class_name方法(仅适合单类唯一匹配场景)
如果你确认你写的多个类名中有一个是该元素独有的,可以直接传入单个类名使用该方法:
# 不需要加.前缀,直接传类名字符串 profile_name = driver.find_element_by_class_name("_7UhW9").text print(profile_name)
可选优化:增加元素等待避免加载报错
如果运行时提示找不到元素,大概率是元素还没加载完成就执行了定位逻辑,可以增加显式等待处理:
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 最长等待10秒,直到目标元素加载完成 target_element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, "._7UhW9.fKFbl.yUEEX.KV-D4.fDxYl")) ) print(target_element.text)
内容的提问来源于stack exchange,提问作者Tom Rudolph
相关产品推荐
相关产品推荐

