如何使用Selenium从页面获取"facebook messages"收到的消息?



我正在尝试编写一个Python程序,该程序将在一个人发短信后立即从facebook消息页面(类似于facebook信使(获取最后一条消息,并将其打印在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:Chromedriverchromedriver.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""")

如何从这里开始,当他这样做的时候得到信息?

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

  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读取聊天文本

相关内容

最新更新