gpt4 book ai didi

selenium - 如何 Selenium 测试使用 Google OAuth 的网站

转载 作者:行者123 更新时间:2023-12-03 14:28:04 25 4
gpt4 key购买 nike

我正在构建一个网站,该网站使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com