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

Selenium循环发消息异常:第二个用户无法输入消息的问题排查

循环发送私信时第二个用户无法输入消息的解决方法

问题描述

循环读取用户ID拼接私信链接,给第一个用户发消息正常,但第二个用户页面加载后无法输入消息,触发元素点击拦截错误。

原代码

while True:
    user = str(list.readline())
    if not user:
        break
    web.get(baseeitaa + user)
    # text bar
    textbar = web.find_element(By.XPATH, '//*[@id="column-center"]/div/div/div[4]/div/div[1]/div[7]/div[1]/div[1]')
    textbar.send_keys(newmsg)
    time.sleep(1)
    # send button
    sendb = web.find_element(By.XPATH, '//*[@id="column-center"]/div/div/div[4]/div/div[4]/button/div')
    sendb.click()
    time.sleep(5)    

报错信息

selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <div class="c-ripple"></div> is not clickable at point (840, 652). Other element would receive the click: <div contenteditable="true" class="input-message-input scrollable scrollable-y i18n no-scrollbar" dir="auto" data-placeholder="پیام" style="transition-duration: 181ms; height: 37px;"></div>
  (Session info: chrome=137.0.7151.41)
Stacktrace:
    GetHandleVerifier [0x0x7ff63e5991f5+2853845]
    GetHandleVerifier [0x0x7ff63e2f3ac0+79008]
    (No symbol) [0x0x7ff63e0b9bda]
    (No symbol) [0x0x7ff63e1180e9]
    (No symbol) [0x0x7ff63e115a8b]
    (No symbol) [0x0x7ff63e112ad1]
    (No symbol) [0x0x7ff63e1119d1]
    (No symbol) [0x0x7ff63e103004]
    (No symbol) [0x0x7ff63e1384ba]
    (No symbol) [0x0x7ff63e1028b6]
    (No symbol) [0x0x7ff63e1386d0]
    (No symbol) [0x0x7ff63e1608f5]
    (No symbol) [0x0x7ff63e138293]
    (No symbol) [0x0x7ff63e101061]
    (No symbol) [0x0x7ff63e101df3]
    GetHandleVerifier [0x0x7ff63e5c410d+3029741]
    GetHandleVerifier [0x0x7ff63e5be52d+3006221]
    GetHandleVerifier [0x0x7ff63e5dd5b2+3133330]
    GetHandleVerifier [0x0x7ff63e30d98e+185198]
    GetHandleVerifier [0x0x7ff63e314edf+215231]
    GetHandleVerifier [0x0x7ff63e2fc324+113924]
    GetHandleVerifier [0x0x7ff63e2fc4d9+114361]
    GetHandleVerifier [0x0x7ff63e2e3208+11240]
    BaseThreadInitThunk [0x0x7ff94f797374+20]
    RtlUserThreadStart [0x0x7ff94fabcc91+33]

问题分析

原代码在同一窗口跳转不同用户页面,容易出现DOM未完全刷新、元素状态残留的问题,导致输入框无法正常获取焦点,触发点击拦截错误。

调试后可用代码

通过为每个用户打开独立新窗口,隔离页面环境,同时增加输入框点击确保焦点:

while True:
    user = str(list.readline())
    if not user:
        break
    web.execute_script("window.open('')")
    web.switch_to.window(web.window_handles[1])
    web.get(baseeitaa + user)
    log.write('opened the user:' + user + '\n')
    time.sleep(2)
    textbar = web.find_element(By.XPATH, '//*[@id="column-center"]/div/div/div[4]/div/div[1]/div[7]/div[1]/div[1]')
    textbar.click()  # 确保输入框获得焦点
    textbar.send_keys(newmsg)
    log.write('type the message:' + newmsg + '\n')
    time.sleep(1)
    # send button
    sendb = web.find_element(By.XPATH, '//*[@id="column-center"]/div/div/div[4]/div/div[4]/button/div')
    sendb.click()
    log.write('send the message:' + newmsg + '\n')
    time.sleep(1)
    web.close()
    web.switch_to.window(web.window_handles[0])

补充说明

  • time.sleep 用于等待页面加载,需根据网络速度调整时长,确保元素完全渲染后再执行操作。
  • 新窗口方式彻底隔离了每个用户的页面状态,避免了同一窗口跳转带来的DOM残留问题。

内容的提问来源于stack exchange,提问作者محمد مهدی شیخی

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:12:02