Als eine regelmäßige Aufgabe innerhalb meiner Job-Rolle muss ich oft vollständige Facebook-Konten von einem Benutzerkonto herunterladen. Ich versuche, meinen Workflow zu verbessern und dies zu automatisieren, wenn ich kann.Facebook Konto Download Automatisierung mit Python?
Ich habe versucht, auf der Website nach diesem Thema zu suchen, und obwohl viele den Login-Teil abdecken, muss ich noch eine Frage finden, die sich mit den Popup-Fenstern von Facebook beschäftigt. Wenn ich falsch liege, entschuldige ich mich und bitte korrigieren Sie den Beitrag entsprechend.
Als Ausgangspunkt habe ich beschlossen, Python zu lernen und benutze dies, um den Prozess mit ein wenig Hilfe von Selen und Chrome Driver zu skripten. Ich habe es geschafft, den Code für die Anmeldung zu schreiben und zur richtigen Seite zu navigieren und auf den ersten Link "Kopie herunterladen" zu klicken. Ich habe jedoch Schwierigkeiten, das Skript zu finden und klicken Sie auf die Schaltfläche "Start My Archive" im Popup-Fenster.
Hier ist der Code, dass ich die mehrere alternative Codeblöcke einschließlich bisher verwendet haben, die ich am Boden kommentiert haben versucht, aus:
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()
Wenn Start Mein Archiv ist kein Webelement und es ist, was Windows auftaucht, können Sie nicht mit Treiber umgehen. Es gibt eine Klasse namens Robot, mit der Windows-basierte Alerts behandelt werden können. Beziehen Sie dieses http://www.softwaretestinghelp.com/handle-alerts-popups-selenium-webdriver-selenium-tutorial-16/ –
@KishanPatel danke für Ihren Link und Tutorial. Ich werde das durcharbeiten und sehen, ob es hilft. Du hast über Webelement's erwähnt und ich denke, der Button ist einer. Ich habe den HTML-Code von der Seite unten eingefügt, die helfen kann zu klären, ob es sich um einen solchen Elementtyp handelt oder nicht. Es sieht auch so aus, als gäbe es eine Anforderung, JavaScript zu verwenden, um dies zur Arbeit zu bringen, aber nicht sicher? – JamesLC