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

Python使用Selenium WebDriver获取元素文本为空的问题排查

问题根源

你定位到的是<input>表单元素,这类元素的展示内容存放在value属性中,并非元素的text节点,直接调用.text只能拿到空值。另外你第一次执行取值后就把结果存在了静态变量msg里,DOM更新后这个变量不会自动同步最新值,自然看不到走棋后的提示变化。

修复方法
  • 替换旧版的find_element_by_css_selector定位写法,改用Selenium当前版本支持的By定位器,避免版本兼容报错
  • 读取输入框内容时,调用get_attribute("value")获取提示文本,不要用.text
  • 需要获取最新状态时,重新执行属性读取操作,不要复用首次存储的静态变量值
修复后参考代码
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

driver = webdriver.Chrome("./chromedriver")
driver.get("目标Hex游戏站点地址")

# 定位状态提示输入框
msgbox = driver.find_element(By.CSS_SELECTOR, "body > div > form > table > tbody > tr > td:nth-child(5) > table > tbody > tr:nth-child(9) > td > table > tbody > tr:nth-child(3) > td > input")

# 读取初始提示
msg = msgbox.get_attribute("value")
print(msg)  # 正常输出初始状态:Red to move.

# 执行走棋操作后,重新读取value即可获取最新提示
# 下方sleep替换为实际的走棋操作逻辑
time.sleep(3)
updated_msg = msgbox.get_attribute("value")
print(updated_msg)  # 输出走棋后更新的状态,比如胜负提示、下一步轮到哪方

补充提示:只要页面没有刷新、元素没有被销毁,已经定位到的msgbox对象可以重复使用,不需要每次取值都重新定位元素。如果需要实时监听状态变化,可以写定时轮询逻辑重复读取value属性,检测到值变化时触发对应处理即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:09:17