You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:45:36