Python 如何从“获取收到的消息”;“facebook消息”;页面使用硒?
我正在尝试编写一个Python程序,该程序将从facebook消息页面(类似于facebook messenger)中获取一个人的最后一条消息,只要他发短信并在Python IDE中打印出来 我正在使用Selenium打开页面,进入我希望收到消息的人的文本框。我不知道如何从那里开始,因为每次新文本出现时,新文本的xpath、选择器等都会发生变化,即使我使用了预期的_条件,我该怎么办?元素本身正在更改。如果可以获取元素id或xpath或其他信息,我可以轻松地使用gettext()方法获取文本 下面是我的最小代码,用于访问我希望收到消息的人的文本框-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()方法获取文本 下面
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”是聊天用户名。)//div[@data hover='tooltip']/div[@role='img']
标识facebook笑脸或GIF图像//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,但它给出了相同的错误,我不知道为什么。