使用selenium-chromedriver发内容到Telegram bot报WebElement无法JSON序列化如何解决
问题解决方法
报错原因
TypeError: Object of type WebElement is not JSON serializable报错的核心原因是:
Telegram Bot 的send_message方法的text参数仅支持传入字符串类型的值,你代码中直接传入了 Selenium 查询返回的WebElement对象,该对象是 Selenium 自定义的元素类型,无法被直接序列化为 JSON 格式传输给 Telegram 接口。
解决步骤
- 从
WebElement对象中提取你需要的文本内容,调用 WebElement 的.text属性即可获取元素内的可见文本 - 将提取到的字符串传入
send_message的text参数
修正后的代码示例
# 定位目标元素 element = browser.find_element_by_xpath("//div[@class='span12']") # 提取元素内的可见文本内容 element_text = element.text # 发送提取到的文本 context.bot.send_message(chat_id=update.message.chat_id, text=element_text)
额外说明
- 如果需要获取元素的全部 HTML 源码而非可见文本,可以替换为
element.get_attribute('innerHTML') - 建议增加元素存在性判断逻辑,避免定位失败抛出异常中断程序
内容的提问来源于stack exchange,提问作者Sithum Batrow
相关产品推荐
相关产品推荐

