【问题标题】:Sending message on Facebook using Python使用 Python 在 Facebook 上发送消息
【发布时间】:2018-01-18 23:20:02
【问题描述】:

尝试使用 Python 在 Facebook 上发送消息。所有步骤都有效,直到将文本放入 textarea 以发送。获取错误代码:

无法定位元素:{"method":"css selector","selector":"div textarea.uiTextareaNoResize"}

这是整个代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import sched, time, timeit
import random
import getpass
import sys

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("USERPASS")
passElem.send_keys(Keys.RETURN)
userTargetUrl = "https://www.facebook.com/messages/t/" + "USERTARGET NAME"
driver.get(userTargetUrl)

elem = driver.find_element_by_css_selector("div textarea.uiTextareaNoResize")

elem.send_keys("Test")
elem.send_keys(Keys.RETURN)
driver.find_element_by_id("u_0_t").click()

此处发生错误:

elem = driver.find_element_by_css_selector("div textarea.uiTextareaNoResize")

elem.send_keys("Test")
elem.send_keys(Keys.RETURN)
driver.find_element_by_id("u_0_t").click()

在控制台上收到此消息:

selenium.common.exceptions.NoSuchElementException: 
Message: no such element: 
Unable to locate element: {"method":"css selector","selector":"div textarea.uiTextareaNoResize"}
      (Session info: chrome=63.0.3239.132)
      (Driver info: chromedriver=2.35.528161 (5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 10.0.15063 x86_64)

这里的代码失败了:

elem = driver.find_element_by_css_selector("div textarea.uiTextareaNoResize")

In this picture you can see where I want my message to be written.

【问题讨论】:

  • 尝试使用print graph进行调试,看看它是否包含数据并完成游览!
  • 不要刮脸书。他们不允许,迟早会阻止它。只需使用 API
  • 找不到任何可让您搜索人员的 API。

标签: python facebook message facebook-messenger facebook-messages


【解决方案1】:

您必须设置一个变量来存储 graph.request 响应,然后打印它:

token = 'access_token'
graph = facebook.GraphAPI(access_token=token, version="2.11")
response = graph.request('search', {'q': 'Mark Zuckerberg', 'type': 'user'})
print(response)

如果你有 access_token 值,也不需要通过 Selenium 登录。

【讨论】:

  • 感谢您的帮助,但我需要使用 Selenium,因为它是用于测试的。
猜你喜欢
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
  • 2019-12-31
  • 1970-01-01
  • 2013-10-28
  • 2012-01-01
  • 1970-01-01
相关资源
最近更新 更多