Python 如何从“获取收到的消息”;“facebook消息”;页面使用硒?

Python 如何从“获取收到的消息”;“facebook消息”;页面使用硒?,python,html,facebook,selenium,selenium-chromedriver,Python,Html,Facebook,Selenium,Selenium Chromedriver,我正在尝试编写一个Python程序,该程序将从facebook消息页面(类似于facebook messenger)中获取一个人的最后一条消息,只要他发短信并在Python IDE中打印出来 我正在使用Selenium打开页面,进入我希望收到消息的人的文本框。我不知道如何从那里开始,因为每次新文本出现时,新文本的xpath、选择器等都会发生变化,即使我使用了预期的_条件,我该怎么办?元素本身正在更改。如果可以获取元素id或xpath或其他信息,我可以轻松地使用gettext()方法获取文本 下面

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

我正在使用Selenium打开页面,进入我希望收到消息的人的文本框。我不知道如何从那里开始,因为每次新文本出现时,新文本的xpath、选择器等都会发生变化,即使我使用了预期的_条件,我该怎么办?元素本身正在更改。如果可以获取元素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""")


如何从这里开始,在他这样做时获得信息?

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

  • 切换到帧
    驱动程序。切换到帧(//iframe[contains(@src,'userid')])
    (注意:这里的“userid”是聊天用户名。)
  • 使用此XPath
    //div[@data hover='tooltip']/div[@role='img']
    标识facebook笑脸或GIF图像
  • 使用此XPath
    //div[@data hover='tooltip']/div/span
    读取聊天文本

  • 您可以共享您试图访问的元素的HTML DOm吗。我无法登录Facebook查看我自己。请先浏览/div/div并抓取最后的数据工具提示position=“left”。它对应于其他人发送的最后一条消息。@arundeepchohan您能告诉我数据工具提示position=“left”的代码格式吗?它很长,但是如果您//*[@id=“js_i”]/div/div/div/div/div。这是一个div标签,您可以在搜索时检查它的属性值。聊天用户名是什么意思?这是我问题中代码最后第二行的用户id还是昵称或其他任何东西?问题代码最后第二行的用户id。NoSuchFrameException:Message://iframe[contains(@src,'id')]出现错误。这是出乎意料的id应该类似于:dilimpeghwal,或者它可能包含数字123456765556。您可以在浏览器的url栏中找到。是否有其他方法可以在不更改框架的情况下选择最后一个文本?我给出了正确的用户ID,但它给出了相同的错误,我不知道为什么。