如何使用Selenium选中Twitch页面的聊天输入框元素?
问题原因
- 没有设置等待逻辑,Twitch直播页的聊天区域是异步渲染的,调用
driver.get后直接查找元素时元素还未加载完成,会触发元素不存在报错 - 旧版
find_element_by_id方法在Selenium 4.0+版本中已被废弃,且当前Twitch前端结构中聊天输入框没有固定的chat-input的id属性,原有定位规则失效 - 部分主播直播间会先弹出成熟内容确认弹窗,未处理弹窗的情况下也无法操作聊天输入框
正确实现代码
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC op = Options() op.add_argument("user-data-dir=C:\\Users\\bestg\\AppData\\Local\\Google\\Chrome\\bor") driver = webdriver.Chrome(options=op) driver.get('https://www.twitch.tv/mizkif') # 最多等待10秒,处理可能出现的成熟内容确认弹窗 try: confirm_btn = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, '[data-a-target="content-classification-gate-overlay-start-watching-button"]')) ) confirm_btn.click() except: # 没有弹窗则跳过处理 pass # 等待聊天输入框加载完成且可点击 chat_input = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, '[data-a-target="chat-input"]')) ) # 输入内容后加换行即可直接发送消息 chat_input.send_keys('hi\n')
注意事项
- 确保你的Chrome浏览器和ChromeDriver版本完全匹配,避免版本不兼容导致的元素定位失败
- 如果你的账号没有登录Twitch,部分直播间会限制未登录用户发送消息,建议先在你指定的用户数据目录下提前登录好Twitch账号
- 不要频繁发送重复内容,避免触发Twitch的反爬机制导致账号被限制发言
内容的提问来源于stack exchange,提问作者Nick Winston
相关产品推荐
相关产品推荐

