2016-04-15 46 views
3

我正在構建一個網站,該網站使用Google OAuth對用戶進行身份驗證,並代表用戶執行Google中的操作(發送電子郵件,創建日曆活動等)。如何硒測試使用Google OAuth的網站

我想用硒來測試網站是否按我的預期工作。這包括特定於網站的內容(例如,按下此按鈕會導致數據庫中的此條目),但也包括Google特定的內容(例如按此按鈕會導致發送此確切電子郵件)。

我如何合理地測試這使用硒?我如何自動登錄?我有什麼辦法可以測試用戶X無法執行這些特定操作,但用戶Y可以嗎?

目前我將JSON化的用戶記錄(使用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

謝謝Florent。我們使用的是Google Apps,因此每個額外的帳戶都會花費我們的錢,如果有付費方式,我們會很高興。我也親自使用2FA,所以無法自動登錄。 – Billy

+0

由於驗證過程未由您的應用程序處理,您應該禁用2FA。 –

+0

對不起,我的意思是我爲我的Google帳戶啓用了2FA。因此,使用Google流程的登錄涉及提供2FA令牌,這是我無法自動執行的。 – Billy