2016-04-15 17 views
3

Google OAuthを使用してユーザーを認証し、ユーザーを代わってGoogleでメールを送信(メール送信、カレンダーイベントの作成など)するためのウェブサイトを構築しています。Google OAuthを使用するウェブサイトをセレンにテストする方法

私は期待どおりにウェブサイトが動作することをテストするためにセレンを使用したいと思います。これにはウェブサイト固有のものが含まれます(このボタンを押すとDB内にこのエントリが表示されます)。また、Google固有のものも含まれます(このボタンを押すと正確なメールが送信されます)。

セレンを使用してこれを合理的にテストするにはどうすればよいですか?どうすれば自動的にログインできますか?ユーザーXがこれらの特定の操作を実行できないがユーザーYは実行できることをテストする方法はありますか?

現在、JSONifiedユーザーレコード(Google資格情報付き)をファイルに保存し、テストのセットアップ時にそのファイルを読み込みます。ファイルが見つからない場合は、ブラウザウィンドウを起動し、そのブラウザウィンドウを使用して手動でサインインするまでスリープします。これは、ハッキーと壊れやすい感じ。また、ユーザーレコードファイルが自分のマシンでのみ使用可能であるため、CIテストを受けることもできません。

答えて

3

異なる権限を許可する異なるアカウントを作成することができます。その後、単に実際のユーザーのようにログインを自動化します。 これは、GmailのStackOverflowにログインするPythonの例です。

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

driver = webdriver.Firefox() 
wait = WebDriverWait(driver, 10) 

driver.get("https://stackoverflow.com/users/login") 

# Click GMail login 
driver.find_element_by_xpath("//span[.='Google']").click() 

# type email 
wait.until(EC.presence_of_element_located((By.ID, "Email"))).send_keys('...') 

# click next 
wait.until(EC.presence_of_element_located((By.ID, "next"))).click() 

# type password 
wait.until(EC.presence_of_element_located((By.ID, "Passwd"))).send_keys('...') 

# click signin 
wait.until(EC.presence_of_element_located((By.ID, "signIn"))).click() 

# wait for the end of the redirection 
wait.until(EC.presence_of_element_located((By.ID, "nav-questions"))) 
+0

ありがとうフロラン。私たちはGoogle Appsを使用しているため、余分なアカウントごとに費用がかかります。支払いをしなくてもやり遂げる方法があればうれしいでしょう。私も個人的に2FAを使用しているので、自分のログインを自動化することはできません。 – Billy

+0

2FAを無効にする必要があります。これは、認証プロセスがアプリによって処理されないためです。 –

+0

申し訳ありませんが、Googleアカウントで2FAを有効にしています。だから、Googleのプロセスを使用してサインイン私は自動化することはできません何か、2FAのトークンを提供することが含まれます。 – Billy

関連する問題