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

使用Selenium自动化Twitter评论遇ElementNotInteractableException问题求助

Twitter评论自动化输入失败解决方案

针对你遇到的ElementNotInteractableException错误(元素无法通过键盘访问),结合Twitter评论框基于Draft.js富文本编辑器的特性,给你几个可行的解决方法:

方法1:定位真正的可编辑元素

Twitter的评论输入框外层div只是容器,真正接受输入的是内部带contenteditable="true"属性的元素。用显式等待确保元素可交互后再操作:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待可编辑元素加载并可点击
editable_element = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, '//div[@data-testid="tweetTextarea_0"]//div[@contenteditable="true"]'))
)
editable_element.click()  # 聚焦元素
editable_element.send_keys("你的评论内容")

方法2:用JavaScript强制注入文本

如果send_keys仍失效,直接通过JS修改元素内容并触发输入事件,让Twitter系统识别到内容变化:

editable_element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, '//div[@data-testid="tweetTextarea_0"]//div[@contenteditable="true"]'))
)
# 设置文本内容
driver.execute_script("arguments[0].textContent = '你的评论内容';", editable_element)
# 触发输入事件,避免Twitter认为内容未编辑
driver.execute_script("arguments[0].dispatchEvent(new Event('input', { bubbles: true }));", editable_element)

方法3:排查页面遮挡问题

如果上述方法仍无效,检查页面是否有弹窗(如登录提示、授权请求)遮挡了评论框,需先关闭这些弹窗再操作输入框。

为什么之前的方法无效?

  • 你定位的public-DraftStyleDefault-block是富文本编辑器的文本渲染块,并非可编辑的根元素,因此无法接收键盘输入;
  • ActionChains的send_keys需要先聚焦到正确的可交互元素,否则只会向页面全局发送按键,无法输入到目标框内。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:23:25