【问题标题】:How to obtain received message from "facebook messages" page using selenium?如何使用 selenium 从“facebook 消息”页面获取收到的消息?
【发布时间】:2020-09-03 15:09:38
【问题描述】:

我正在尝试编写一个 Python 程序,该程序将在他发短信后立即从 facebook 消息页面(类似于 facebook messenger)获取某人的最后一条消息并在 Python IDE 中打印。

我正在使用 Selenium 打开页面并进入我期待消息的人的文本框。我不知道如何从那里继续,因为每次新文本来自新文本的 xpath、选择器等文本更改,即使我使用 expected_conditions,我应该怎么做?元素本身正在发生变化。如果我可以获取元素 id 或 xpath 或其他方式,我可以轻松使用 gettext() 方法获取文本。

下面是我的最小代码,用于到达我期待消息的人的文本框-

from selenium import webdriver 

usr = "x******@gmail.com" 
pwd = "y*****"

opt = webdriver.ChromeOptions()
opt.add_experimental_option("prefs",{"profile.default_content_setting_values.notifications":2}) # Block_notifications
driver = webdriver.Chrome('C:\Chromedriver\chromedriver.exe',chrome_options=opt)

driver.get('https://www.facebook.com/') 
username_box = driver.find_element_by_id('email') 
username_box.send_keys(usr) 
password_box = driver.find_element_by_id('pass') 
password_box.send_keys(pwd) 
login_box = driver.find_element_by_id('u_0_b') 
login_box.click()
driver.get("https://www.facebook.com/messages/t/userid") 
textbox = driver.find_element_by_xpath(r"""//*[@id="js_i"]/div/div/div""")

如何从这里着手,在他这样做的时候得到消息?

【问题讨论】:

  • 您能否分享您尝试访问的元素的 HTML DOm。我无法登录 Facebook 来查看自己。
  • 首先 xpathing /div/div 并抓取最后一个 data-tooltip-position="left"。它对应于对方发送的最后一条消息。
  • @arundeepchohan 你能告诉我 data-tooltip-position="left" 的代码格式吗?
  • 这很长,但如果你 //*[@id="js_i"]/div/div/div/div/div 。这是一个div标签,你可以在搜索时查看它的属性值。

标签: python html facebook selenium selenium-chromedriver


【解决方案1】:

您的问题将通过以下步骤解决。

  1. 切换到框架driver.switch_to_frame("//iframe[contains(@src,'userid')]")(注意:这里的“userid”是聊天用户名。)
  2. 使用此 XPath //div[@data-hover='tooltip']/div[@role='img'] 来识别 Facebook 表情符号或 GIF 图片。
  3. 使用此 XPath //div[@data-hover='tooltip']/div/span 阅读聊天文本。

【讨论】:

  • 聊天用户名是什么意思?是我的问题中代码的最后第二行的用户 ID 还是昵称或其他任何内容?
  • userid 来自相关代码的倒数第二行。
  • NoSuchFrameException: Message: //iframe[contains(@src,'id')] 出现错误。这是意料之外的
  • userid 应该类似于:dilipmeghwal 或者它可能包含数字 1234567765556。您可以在浏览器 url 栏中找到它。
  • 是否可以选择最后一个文本而不更改框架?我给出了正确的用户 ID,但它给出了同样的错误——不知道为什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
相关资源
最近更新 更多