You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中Selenium按ClassName定位元素后element.text为空求助

Selenium获取图片元素后element.text为空的原因及解决办法

问题描述

需要获取同一类名的Web元素用于截图,使用Python版Selenium实现,但发现element.text结果为空,页面中确实存在多个该类名的元素。

原代码

url = "https://www.pexels.com/search/happy/"
driver = webdriver.Chrome(executable_path=ChromeDriverManager().install())
driver.get(url)

elements = driver.find_elements(By.CLASS_NAME, "MediaCard_image__ljFAl")

print("**** Start *******")
print(elements.count)

for element in elements:
 print("1")
 print(element.text)

print("**** End *******")

执行输出

**** Start *******

<built-in method count of list object at 0x00000250202F2000>
1

1

1

1

1

1

1

1

**** End *******

原因分析

  1. 元素类型导致text为空:MediaCard_image__ljFAl对应的是页面中的<img>图片元素,这类元素属于自闭合标签,本身没有文本内容。Selenium的element.text属性获取的是元素内部的文本节点内容,所以图片元素的text自然为空。
  2. 元素数量打印错误:Python列表没有count方法(你看到的输出是方法对象的字符串表示),要获取元素数量应该使用len(elements)。

解决办法

  • 验证元素是否正确获取:可以通过获取图片的其他属性来确认,比如src(图片链接)或alt(替代文本):
    for element in elements:
        print(element.get_attribute("alt"))
        print(element.get_attribute("src"))
    
  • 直接执行截图操作:如果目标是对元素截图,无需依赖text属性,直接调用element.screenshot()方法即可:
    for index, element in enumerate(elements):
        element.screenshot(f"happy_photo_{index}.png")
    
  • 修正元素数量打印:将print(elements.count)改为print(len(elements)),这样就能正确输出获取到的元素总数。

内容的提问来源于stack exchange,提问作者hina abbasi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:02:35