2016-05-12 7 views
0

私の仕事の役割の中で通常の仕事として、私は多くの場合、ユーザーアカウント内から完全なFacebookアカウントをダウンロードする必要があります。私は自分のワークフローを改善し、可能ならばこれを自動化しようとしています。Facebookアカウントの自動化とPython?

私はサイト上でこのトピックを検索しようとしましたが、多くはログイン部分をカバーしていますが、まだFacebookのポップアップウィンドウを扱う質問を見つけることはできません。私が間違っている場合、私は謝罪し、それに応じて投稿を修正してください。

出発点として、私はPythonの学習を開始することに決めました。これを使用して、セレンとChrome Driverの助けを借りてプロセスをスクリプト化しています。私は、ログインするためのコードを書いて正しいページに移動し、最初のリンク 'コピーをダウンロードする'をクリックしました。しかし、私は、スクリプトを見つけてポップアップウィンドウ内の「Start My Archive」ボタンをクリックするように苦労しています。ここで

は、私はこれまで、私は一番下にコメントアウトしようとしているいくつかの代替コードブロックを含んで使用しているコードは次のとおりです。それが動作している場合

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() 
+0

[マイアーカイブを開始]がWeb要素ではなく、どのウィンドウがポップアップしているのかは、ドライバで処理できません。 Windowsベースのアラートを処理するために使用できるRobotというクラスがあります。参照してください http://www.softwaretestinghelp.com/handle-alerts-popups-selenium-webdriver-selenium-tutorial-16/ –

+0

@KishanPatelリンクとチュートリアルをありがとう。私はこれを介して作業し、それが役立つかどうかを確認します。あなたはweb要素のことについて言及しました。私はそのボタンが1だと思います。私は、このタイプの要素であるかどうかを明確にするのに役立つかもしれない下のページからhtmlを含めました。また、これを動作させるにはjavascriptを使用する必要がありますが、それは確かではありませんか? – JamesLC

答えて

0

ちょうどあなたのコードにこれを追加して実行したり、ない。常にCssSelectorを使用してください。

私はJavaでEclipseで以下のコードを実行しました。私はPythonを認識していません。何か構文に誤りがあると、私は謝罪します。ちょうどこれを試してみてください。

driver.implicitly_wait(10) 
Startmyarchive = driver.find_element_by_css_selector("._42ft._42fu.selected._42gz._42gy") 
Startmyarchive.click() 

driver.implicitly_wait(10) 
Acknowledge = driver.find_element_by_css_selector("._42ft._42fu.layerConfirm.uiOverlayButton.selected._42g-._42gy") 
Acknowledge.click() 

driver.implicitly_wait(10) 
ClickOkay = driver.find_element_by_css_selector("._42ft._42fu.layerCancel.uiOverlayButton.selected._42g-._42gy") 
ClickOkay.click() 

ハッピーラーニング:-)どの質問に対しても返信してください。

+0

このコードをお寄せいただきありがとうございます。私はそれを試して、それが本当に役立つように動作します。私はコードを含めなかったことに気付きました。私はこのことをさらに深く見ていただきありがとうございました。 – JamesLC

+0

うん、ジェームス。楽しい。より多くのクエリを思いついてください。いつも学ぶのはうれしいです。 :-) –

+0

こんにちはKishan、私はいつもCssSelectorを使用してあなたのコメントを取って、次の段階にスクリプトを進めようとしています。あなたのヒントの助けを借りて、今私は "入力パスワード"ポップアップを介して得ることができますが、これまでのように動作していないため、これは前と同じスタイルのポップアップ場合はまだ確立するためです! :-) – JamesLC

関連する問題