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

使用Selenium实现Facebook多页面批量自动发帖时的文本输入、图片粘贴问题求助

Selenium实现Facebook多页面批量自动发帖时的文本输入、图片粘贴问题求助

我正在用Selenium开发一个能同时给多个页面批量自动发帖的工具,但碰到了两个头疼的问题,想请教大家:

问题1:文本输入异常

尝试一次性往发帖输入框粘贴或输入整段文本时,每一行都只显示第一个字。比如我要输入:

Hi
How
are you?
实际输入后显示的却是:
H
H
a
目前我只能靠循环调用send_keys()来逐字输入,但这个速度比人工打字还慢,实在不是理想方案。

问题2:图片粘贴失败

我尝试过两种方式往输入框里粘贴图片:一是模拟Ctrl+V(剪贴板里已经有图片),二是直接用send_keys(image),但都没有成功,不知道该怎么正确实现图片粘贴。

以下是我目前的测试代码(还有不少可以优化的地方,先这么写是为了测试功能):

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

print("navegador")
#abre navegador
profile = webdriver.FirefoxProfile()
profile.set_preference("dom.webnotifications.enabled", False)

browser = webdriver.Firefox(options=profile)
browser.get('https://www.facebook.com')
browser.maximize_window()

print("datos")
#carga datos
arch3 = open("datos.txt", "r")
user = []

arch2 = open("grupos.txt", 'r')
list = []

for i in arch2.readlines():
    list.append(i)
    arch2.close()

for i in arch3.readlines():
    user.append(i)
arch3.close()

print("login")
#login
login = browser.find_element(By.ID, "email")
login.send_keys(user[0])

p = browser.find_element(By.ID, "pass")
p.send_keys(user[1])
time.sleep(5)
#p.send_keys(Keys.RETURN)

try:
    boton = browser.find_element(By.XPATH, "//*[starts-with (@id, 'u_0_5_')]")
    boton.click()
    time.sleep(10)
except:
    print("No Login")
    time.sleep(25000)

print("grupo")
#grupo
for i in list:
    grupos = 0
    browser.get(i)

    print("post")
    #Post
    time.sleep(20)
    post = WebDriverWait(browser, 40).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[1]/div/div/div[1]/div/div[3]/div/div/div[1]/div[1]/div[4]/div/div[2]/div/div/div[2]/div[1]/div/div/div/div[1]/div")))
    post.click()


    print("post 1.1")
    time.sleep(20)
    post2 = WebDriverWait(browser, 40).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[1]/div/div/div[1]/div/div[4]/div/div/div[1]/div/div[2]/div/div/div/div/div[1]/form/div/div[1]/div/div/div/div[2]/div[1]/div[1]/div[1]/div[1]/div/div/div[1]")))
    post2.click()

    post2.send_keys("Hello World")

    time.sleep(25000)

另外还有几个代码里的小细节说明:

  • 代码中的print语句是用来跟踪代码执行流程的
  • 本来想用send_keys(Keys.RETURN)代替定位登录按钮,但这个操作的成功率只有一半
  • 最后的time.sleep()是用来临时检查XPATH/ID/CLASS等元素定位是否正确
  • 有些time.sleep()是为了适配页面加载速度,之后会换成WebDriverWait来优化

备注:内容来源于stack exchange,提问作者Kaster

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 17:54:33