Python3 Selenium如何定位指定元素并获取其动态更新的文本数值
定位方案与示例代码
核心定位逻辑
目标元素携带唯一业务属性data-target="points.balance",优先使用该属性做定位依据,稳定性远高于样式类名定位,不会因为前端样式调整导致定位失效。
Python 版Selenium实现
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 初始化Chrome浏览器,也可替换为Firefox、Edge等其他浏览器驱动 driver = webdriver.Chrome() driver.get("替换为你的目标页面实际URL") def get_latest_points(): # 每次取值前重新查找元素,搭配10秒显式等待,确保元素已加载完成再读取内容 element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, 'div[data-target="points.balance"]')) ) # 提取文本并去除首尾空白后转为整数类型 points = int(element.text.strip()) return points # 调用方法打印最新积分值 print(get_latest_points()) # 若需要实时轮询获取更新后的值,可使用以下循环逻辑 # import time # while True: # print(get_latest_points()) # time.sleep(2) # 按需调整轮询间隔,单位为秒
注意事项
- 不要复用第一次查找到的元素对象,每次取值都重新触发查找逻辑,避免读取到Selenium缓存的旧元素内容
- 如果数值是异步动态更新的,可以将
presence_of_element_located替换为自定义的文本变化等待条件,确保拿到更新后的值 - 若元素被设置为隐藏状态,
text属性可能返回空,可替换为element.get_attribute("textContent").strip()读取内容 - 定位也可以使用XPath写法:
By.XPATH, '//div[@data-target="points.balance"]',效果和CSS选择器一致
内容的提问来源于stack exchange,提问作者Vertijo
相关产品推荐
相关产品推荐

