Playwright JAVA版本 常用操作总结

文章目录

  • 1. 初始化 Playwright
  • 2. 启动浏览器
  • 3. 打开新页面
  • 4. 导航到网页
  • 5. 定位元素
  • 6. 点击元素
  • 7. 输入文本
  • 8. 模拟键盘事件
  • 9. 截图操作
  • 10. 等待元素加载
  • 11. 断言
  • 12. 网络请求拦截
  • 13. 关闭浏览器
  • 完整示例
  • 总结

系列文章:

Playwright 入门教程:从概念到应用(Java 版)
Playwright JAVA版本 常用操作总结
Jsoup、Selenium 和 Playwright 的含义、作用和区别

1. 初始化 Playwright

  • API: create()

  • 含义: 实例化 Playwright 对象,用于启动浏览器。

  • 示例:

    import com.microsoft.playwright.Playwright;
    
    try (Playwright playwright = Playwright.create()) {
        // 使用 Playwright 进行操作
    }
    

2. 启动浏览器

  • API: chromium().launch()

  • 含义: 打开 Chrome 浏览器实例。

  • 参数:

    • headless: 是否以无头模式运行(默认为 false)。
    • slowMo: 模拟慢速网络环境(单位:毫秒)。
    • ignoreHTTPSErrors: 忽略 HTTPS 错误。
  • 示例:

    Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions()
        .setHeadless(false)
        .setSlowMo(500) // 模拟慢速网络
        .setIgnoreHTTPSErrors(true));
    

3. 打开新页面

  • API: newPage()

  • 含义: 在当前浏览器中打开一个新的标签页或窗口。

  • 示例:

    Page page = browser.newPage();
    

4. 导航到网页

  • API: navigate()

  • 含义: 打开指定的 URL。

  • 示例:

    page.navigate("https://example.com");
    

5. 定位元素

  • API: page.locator()

  • 含义: 使用选择器定位页面上的某个元素。

  • 参数:

    • 支持 CSS 选择器、XPath 等。
  • 示例:

    Locator button = page.locator("button#submit");
    

6. 点击元素

  • API: click()

  • 含义: 模拟鼠标点击操作。

  • 示例:

    page.click("button#submit");
    

7. 输入文本

  • API: fill()

  • 含义: 在输入框中填写内容。

  • 示例:

    page.fill("input[name='username']", "testuser");
    

8. 模拟键盘事件

  • API: keyboard.down()

  • 含义: 模拟键盘按键操作。

  • 示例:

    page.keyboard.down("Shift"); // 按下 Shift 键
    page.keyboard.press("a");    // 按下 'a' 键
    page.keyboard.up("Shift");   // 松开 Shift 键
    

9. 截图操作

  • API: screenshot()

  • 含义: 对整个页面或特定元素进行截图。

  • 参数:

    • setPath: 指定截图保存路径。
    • fullPage: 是否截取整个页面(包括滚动区域)。
  • 示例:

    // 对整个页面截图
    page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("screenshot.png")));
    
    // 对特定元素截图
    ElementHandle element = page.querySelector("div.logo");
    element.screenshot(new ElementHandle.ScreenshotOptions().setPath(Paths.get("logo.png")));
    

10. 等待元素加载

  • API: waitForSelector()

  • 含义: 等待指定的元素满足条件(如可见性)。

  • 参数:

    • selector: 元素的选择器。
    • timeout: 超时时间(单位:毫秒)。
  • 示例:

    page.waitForSelector("div.success-message", new Page.WaitForSelectorOptions().setTimeout(5000));
    

11. 断言

  • API: isVisible()isEnabled()

  • 含义: 验证元素是否满足预期状态。

  • 示例:

    boolean isLoggedIn = page.isVisible("div.success-message");
    if (isLoggedIn) {
        System.out.println("登录成功!");
    } else {
        System.out.println("登录失败!");
    }
    

12. 网络请求拦截

  • API: route()

  • 含义: 拦截和修改网络请求。

  • 示例:

    page.route("/api/data", route -> {
        route.fulfill(new Route.FulfillOptions()
            .setStatus(200)
            .setContentType("application/json")
            .setBody("{\"mocked\": true}"));
    });
    

13. 关闭浏览器

  • API: browser.close()

  • 含义: 关闭浏览器实例。

  • 示例:

    browser.close();
    

完整示例

以下是一个完整的端到端测试示例,结合了上述常用操作:

import com.microsoft.playwright.*;
import java.nio.file.Paths;

public class ExampleTest {
    public static void main(String[] args) {
        try (Playwright playwright = Playwright.create()) {
            Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false));
            Page page = browser.newPage();

            // 导航到目标页面
            page.navigate("https://example.com");

            // 定位并点击按钮
            page.click("button#submit");

            // 输入文本
            page.fill("input[name='username']", "testuser");
            page.fill("input[name='password']", "password123");

            // 等待元素加载
            page.waitForSelector("div.success-message", new Page.WaitForSelectorOptions().setTimeout(5000));

            // 验证登录是否成功
            boolean isLoggedIn = page.isVisible("div.success-message");
            if (isLoggedIn) {
                System.out.println("登录成功!");
            } else {
                System.out.println("登录失败!");
            }

            // 截图
            page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("login_success.png")));

            // 关闭浏览器
            browser.close();
        }
    }
}


总结

Playwright 提供了丰富的 API 来模拟用户行为、截图、断言等操作。常用的操作包括:

  1. 初始化:create()
  2. 启动浏览器:chromium().launch()
  3. 打开新页面:newPage()
  4. 导航:navigate()
  5. 定位元素:locator()
  6. 点击:click()
  7. 输入文本:fill()
  8. 键盘事件:keyboard.down()
  9. 截图:screenshot()
  10. 等待元素:waitForSelector()
  11. 断言:isVisible()isEnabled() 等。
  12. 网络请求拦截:route()

你可能感兴趣的:(爬虫和自动化测试,java,开发语言)