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

使用Python+Selenium实现Facebook好友消息发送的问题排查

解决Facebook消息输入框定位失败的问题

看起来你遇到的核心问题是CSS选择器过时加上没有等待元素完全加载导致的NoSuchElementException,Facebook的UI结构经常更新,旧的选择器很容易失效,我来帮你修正这个问题:

问题分析

  1. 你的原选择器div textarea.uiTextareaNoResize已经不符合当前Facebook消息页面的结构了——现在FB的消息输入框大多使用contenteditable的div而非传统的textarea,类名也早就更新了。
  2. 页面跳转后直接查找元素,没有等待页面渲染完成,元素还没出现在DOM里就触发查找,自然会报错。

修正方案

1. 引入显式等待机制

用Selenium的WebDriverWait等待元素加载完成,避免因页面渲染延迟导致的元素找不到问题。

2. 使用当前有效的选择器

针对Facebook最新的消息输入框结构,我们可以用属性选择器定位到正确的输入元素。

修改后的完整代码

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

driver = webdriver.Chrome('C:\path\chromedriver.exe')
driver.get('https://www.facebook.com/')

# 登录部分
username_box = driver.find_element_by_id('email')
username_box.send_keys(USEREMAIL)
passElem = driver.find_element_by_id("pass")
passElem.send_keys(USERPASSWORD)
passElem.send_keys(Keys.RETURN)

# 进入目标用户对话页
userTargetUrl = "https://www.facebook.com/messages/t/" + "USERTAGET"
driver.get(userTargetUrl)

# 等待消息输入框加载(关键修正)
wait = WebDriverWait(driver, 15)  # 最多等待15秒
# 定位当前FB消息输入框:带有textbox角色且可编辑的div
elem = wait.until(EC.presence_of_element_located(
    (By.CSS_SELECTOR, 'div[role="textbox"][contenteditable="true"]')
))

# 发送消息循环
while True:
    elem.send_keys("Test")
    elem.send_keys(Keys.RETURN)  # 按回车发送,部分情况下可能需要点击发送按钮
    # 如果回车发送无效,替换成下面的代码定位发送按钮:
    # send_btn = wait.until(EC.element_to_be_clickable(
    #     (By.CSS_SELECTOR, 'div[aria-label="Send"]')
    # ))
    # send_btn.click()

额外注意事项

  • 如果你的Chrome版本和chromedriver版本不匹配,也可能导致元素定位异常,建议保持两者版本一致(你的chromedriver是2.35,对应Chrome60-62,但你用的是Chrome63,最好升级chromedriver到对应版本)。
  • Facebook有反爬机制,频繁发送消息可能会触发验证码或账号限制,建议添加适当的延迟(比如time.sleep(2))避免被检测。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:48:51