我正在尝试编写一个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""")
如何从这里开始,当他这样做的时候得到信息?
您的问题将通过以下步骤解决。
- 切换到帧
driver.switch_to_frame("//iframe[contains(@src,'userid')]")
(注意:此处">userid"是聊天用户名。( - 使用此XPath
//div[@data-hover='tooltip']/div[@role='img']
来识别facebook的微笑或GIF图像 - 使用此XPath
//div[@data-hover='tooltip']/div/span
读取聊天文本