我正在构建一个网站,该网站使用 Google OAuth 来验证用户身份并代表用户在 Google 中执行操作(发送电子邮件、创建日历事件等)。
我想使用 selenium 来测试该网站是否按预期工作。这包括特定于网站的内容(例如,按下此按钮会导致此条目进入数据库),也包括特定于 Google 的内容(例如,按下此按钮会导致发送此确切电子邮件)。
我如何使用 Selenium 合理地测试这个?如何自动登录?有什么方法可以让我测试用户 X 不能执行这些特定操作,但用户 Y 可以吗?
目前,我将 JSONified 用户记录(带有 Google 凭据)保存在一个文件中,并在测试设置时加载该文件。如果找不到该文件,则它会启动一个浏览器窗口并休眠,直到我使用该浏览器窗口手动登录。这让人感觉很笨拙和脆弱。它还阻止我进行 CI 测试,因为用户记录文件仅在我的机器上可用。
最佳答案
您可以创建允许不同权限的不同帐户。然后像真实用户一样简单地自动登录。
这是通过 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")))
关于selenium - 如何 Selenium 测试使用 Google OAuth 的网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36645400/