如何使用Playwright Java实现基于邮箱Token的登录自动化?
使用Java + Playwright实现用户名+邮箱Token登录的自动化测试
环境准备
首先确保项目中引入Playwright Java依赖,以Maven为例,在pom.xml中添加:
<dependency> <groupId>com.microsoft.playwright</groupId> <artifactId>playwright</artifactId> <version>1.40.0</version> </dependency> <dependency> <groupId>com.microsoft.playwright</groupId> <artifactId>playwright-test</artifactId> <version>1.40.0</version> <scope>test</scope> </dependency>
核心实现步骤
这个场景的关键是先从注册邮箱提取Token,再回到登录页完成输入提交,分两部分实现:
1. 从测试邮箱提取登录Token
假设使用测试环境邮箱系统,用Playwright打开邮箱页面,定位最新邮件并提取Token:
private static String fetchLoginToken(Playwright playwright) { Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false)); Page emailPage = browser.newPage(); // 登录测试邮箱 emailPage.navigate("https://your-test-email.com/login"); emailPage.locator("#email").fill("test-user@your-domain.com"); emailPage.locator("#password").fill("test-pass"); emailPage.locator("#login-btn").click(); // 打开最新的登录Token邮件 emailPage.waitForSelector(".email-item"); emailPage.locator(".email-item").first().click(); // 从邮件内容提取Token(根据实际邮件格式调整正则) String emailBody = emailPage.locator(".email-content").innerText(); String token = emailBody.replaceAll(".*登录Token:([A-Z0-9]{6}).*", "$1"); emailPage.close(); browser.close(); return token; }
2. 完成应用登录流程
初始化Playwright,打开应用登录页,输入用户名和提取到的Token:
public static void main(String[] args) { try (Playwright playwright = Playwright.create()) { // 获取邮箱Token String loginToken = fetchLoginToken(playwright); // 打开应用登录页 Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false)); Page loginPage = browser.newPage(); loginPage.navigate("https://your-app.com/login"); // 输入用户名和Token loginPage.locator("#username").fill("test-username"); loginPage.locator("#token-input").fill(loginToken); // 提交登录 loginPage.locator("#submit-login").click(); // 验证登录成功(检查是否跳转到首页) loginPage.waitForURL("https://your-app.com/home"); System.out.println("登录验证通过"); loginPage.close(); browser.close(); } }
关键注意事项
- 元素定位:代码中的选择器(如
#username)需替换为实际应用的元素ID/CSS选择器,建议用data-testid属性定位,避免UI变更导致用例失效。 - Token提取逻辑:根据邮件实际格式调整正则,若Token在链接参数中,可通过
locator.getAttribute("href")提取链接后解析参数。 - 等待策略:必须用
waitForSelector/waitForURL处理页面加载延迟,避免元素未加载导致的定位失败。 - 多浏览器兼容:如需测试其他浏览器,将
chromium()替换为firefox()或webkit()即可。
内容的提问来源于stack exchange,提问作者Santosh
相关产品推荐
相关产品推荐

