文章目录
系列文章:
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 来模拟用户行为、截图、断言等操作。常用的操作包括:
- 初始化:
create()。 - 启动浏览器:
chromium().launch()。 - 打开新页面:
newPage()。 - 导航:
navigate()。 - 定位元素:
locator()。 - 点击:
click()。 - 输入文本:
fill()。 - 键盘事件:
keyboard.down()。 - 截图:
screenshot()。 - 等待元素:
waitForSelector()。 - 断言:
isVisible()、isEnabled()等。 - 网络请求拦截:
route()。
911

被折叠的 条评论
为什么被折叠?



