Selenium 이메일 테스트
Selenium은 브라우저를 다룹니다. 이메일 단계에서는 테스트가 읽을 수 있는, 라우팅 가능한 받은편지함이 필요하죠. 이 Selenium 이메일 테스트 가이드는 Python과 일회용 받은편지함 API를 사용합니다 — Playwright·Cypress 버전도 함께 보세요. 모두 개발자를 위한 이메일 테스트의 일부입니다.
받은편지함 헬퍼
import os, time, requests
from selenium import webdriver
from selenium.webdriver.common.by import By
API = "https://moemail.app/api"
H = {"X-API-Key": os.environ["MAIL_KEY"]}
def create_inbox():
return requests.post(API + "/emails/generate", headers=H).json()
def wait_for_email(inbox_id, timeout=30):
end = time.time() + timeout
while time.time() < end:
msgs = requests.get(API + "/emails/" + inbox_id + "/messages", headers=H).json()["messages"]
if msgs:
return msgs[0]
time.sleep(1.5)
raise TimeoutError("no email arrived")
테스트
import re
def test_signup_verification():
inbox = create_inbox()
driver = webdriver.Chrome()
driver.get("https://example.test/signup")
driver.find_element(By.ID, "email").send_keys(inbox["address"])
driver.find_element(By.CSS_SELECTOR, "button[type=submit]").click()
msg = wait_for_email(inbox["id"])
code = re.search("[0-9]{6}", msg["text"]).group(0)
driver.find_element(By.ID, "code").send_keys(code)
assert "Welcome" in driver.page_source
driver.quit()
페이지 요소에는 명시적 대기를, 이메일에는 폴링 헬퍼를 쓰세요. 정규식 [0-9]{6}은 여섯 자리 코드를 잡아냅니다. 링크라면 URL을 대신 검색해 driver.get()을 호출하세요.
팁
테스트마다 받은편지함 하나면 실행이 격리됩니다. 속도 면에서는 webhook이 폴링을 앞섭니다. 메일박스를 만들고 OpenAPI 문서를 확인하세요.