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

如何触发long-press-event JS触发器以实现消息发送?

解决Playwright机器人发送消息未触发服务器请求的问题

针对你遇到的本地显示消息但服务器未接收的情况,核心是没正确触发long-press-event对应的发送逻辑,试试以下几个实用方案:

1. 直接触发longpress自定义事件

既然页面用的是long-press-event库,它本质是给元素绑定了longpress自定义事件,直接通过JS触发这个事件比模拟鼠标操作更可靠:

# 定位发送按钮
send_button = page.locator('css=.chat-Messenger > div:nth-child(2)')
send_button.wait_for()

# 触发longpress事件
page.evaluate("""(element) => {
  const longpressEvent = new CustomEvent('longpress', { bubbles: true, cancelable: true });
  element.dispatchEvent(longpressEvent);
}""", send_button)

2. 用Playwright原生模拟真实长按

python_ghost_cursor的wait_for_click参数可能只是等待点击完成,不是真正的按住鼠标。换用Playwright原生鼠标操作模拟长按:

send_button = page.locator('css=.chat-Messenger > div:nth-child(2)')
send_button.wait_for()

# 用ghost cursor移动到按钮(保持防检测特性)
cursor.move_to(send_button)

# 模拟长按:按下左键 → 等待足够时间(建议1秒,比longpress默认阈值500ms长)→ 松开左键
page.mouse.down()
time.sleep(1)
page.mouse.up()

3. 补充前置触发条件

有些页面会要求元素先处于hover状态才响应长按,或者需要确保元素获得焦点,可以加上:

send_button = page.locator('css=.chat-Messenger > div:nth-child(2)')
send_button.wait_for()

# 先模拟hover
send_button.hover()
# 再执行长按或触发事件
cursor.move_to(send_button)
page.mouse.down()
time.sleep(1)
page.mouse.up()

4. 直接调用发送逻辑函数

如果能找到页面绑定的发送处理函数(比如在浏览器控制台查看元素的事件监听),可以直接调用它:

send_button = page.locator('css=.chat-Messenger > div:nth-child(2)')
send_button.wait_for()

# 假设发送函数是element.sendMessage(),根据实际调整
page.evaluate("""(element) => {
  element.sendMessage();
}""", send_button)

另外,建议尽量用Playwright自带的wait_for系列方法替代固定时长的sleep,既稳定又能降低被检测的概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 17:33:13