2016-04-15 22 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