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

Python+Selenium如何定位文本内容动态变化的HTML元素

可行的定位方案

按稳定性从高到低给出以下可直接复用的方案:

方案1:使用class属性组合定位

目标元素有两个明确的class值,用CSS选择器同时匹配两个类可以最大程度避免误匹配,代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
# 定位元素
target_ele = driver.find_element(By.CSS_SELECTOR, 'div.sc-gtsrHT.jFEWVt')
# 读取文本
text_content = target_ele.text
print(text_content)

注意:如果后续页面更新后该方法失效,大概率是这类sc开头的class是前端框架自动生成的动态类,可切换到方案2。

方案2:使用自定义属性组合定位

该元素的font-size和color是自定义属性,组合匹配的稳定性更高,不会随前端打包规则变更:

# 同时匹配div标签、font-size属性和color属性
target_ele = driver.find_element(By.CSS_SELECTOR, 'div[font-size="14px"][color="text"]')
text_content = target_ele.text

方案3:层级辅助定位

如果页面上同时存在多个符合上述属性的元素,可以先定位到该元素固定的父容器,再向下查找目标元素,比如假设该元素的父元素是id为result-box的div,代码如下:

parent_ele = driver.find_element(By.ID, 'result-box')
target_ele = parent_ele.find_element(By.CSS_SELECTOR, 'div[font-size="14px"][color="text"]')

额外优化建议

如果元素是动态加载的,可加入显式等待避免出现元素未加载的报错:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 最长等待10秒,直到元素加载完成
wait = WebDriverWait(driver, 10)
target_ele = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'div.sc-gtsrHT.jFEWVt')))
text_content = target_ele.text

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:18:03