作爲我工作中的常規任務,我經常需要從用戶帳戶下載完整的Facebook帳戶。我正在嘗試改進我的工作流程並自動化,如果我可以。使用python進行Facebook帳號下載自動化?
我已經嘗試在網站上搜索這個主題,雖然很多涵蓋登錄部分,我還沒有找到一個處理Facebook的彈出窗口的問題。如果我錯了,我表示歉意,請相應修改帖子。
作爲一個起點,我決定開始學習python,並使用它通過硒和Chrome驅動程序的一些幫助來編寫腳本。我設法編寫代碼登錄並導航到正確的頁面,然後單擊「下載副本」的初始鏈接。然而,我努力讓腳本找到並點擊彈出窗口中的「開始我的檔案」按鈕。
下面是我用到目前爲止包括我曾嘗試在底部註釋掉幾種可供選擇的代碼塊中的代碼:
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
#Global Variables
target = "john.doe.7"
username = "[email protected]"
password = "Password"
sleep = 5
#Finds and locates the ChromeDriver
driver = webdriver.Chrome("C:\Python35-32\ChromeDriver\chromedriver.exe")
#Set Chrome Options
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications": 2}
chrome_options.add_experimental_option("prefs",prefs)
driver = webdriver.Chrome(chrome_options=chrome_options)
#Directs browser to webpage
driver.get('http://www.facebook.com');
#code block to log in user
def logmein():
search_box = driver.find_element_by_name('email')
search_box.send_keys(username)
search_box = driver.find_element_by_name('pass')
search_box.send_keys(password)
search_box.submit()
#code to go to specific URL
def GoToURL(URL):
time.sleep(sleep) # Let the user actually see something!
driver.get(URL);
logmein()
GoToURL('https://www.facebook.com/'+'settings')
link = driver.find_element_by_link_text('Download a copy')
link.click()
#driver.find_element_by.xpath("//button[contains(., 'Start My Archive')]").click()
#driver.find_element_by_css_selector('button._42ft._42fu.selected._42gz._42gy').click()
#driver.find_element_by_xpath("//*[contains(text(), 'Start My Archive')]").click()
#driver.find_element_by_css_selector('button._42ft._42fu.layerConfirm.uiOverlayButton.selected._42g-._42gy').click()
#from selenium.webdriver.common.action_chains.ActionChains import driver
#buttons = driver.find_elements_by_xpath("//title[contains(text(),'Start My Archive')]")
#actions = ActionChains(self.driver)
#time.sleep(2)
#actions.click(button)
#actions.perform()
如果啓動我的檔案不是一個webelement,它是什麼窗口彈出,你不能用驅動程序處理它。有一個叫做Robot的類可以用來處理基於窗口的警報。請參考這個 http://www.softwaretestinghelp.com/handle-alerts-popups-selenium-webdriver-selenium-tutorial-16/ –
@KishanPatel謝謝你的鏈接和教程。我會解決這個問題,看看它是否有幫助。你提到關於webelement的,我認爲按鈕是一個。我在下面的頁面中加入了html,這可能有助於說明它是否是這種類型的元素。它也看起來像要求使用JavaScript來獲得這個工作,但不知道? – JamesLC