Locator là gì
Từ chương này quay lại dùng dự án book4-api-automation và pytest (như Chương 3), không còn viết script sync_playwright thủ công như Chương 4.
Locator là 1 "công thức tìm" phần tử trên trang — không tìm ngay lúc gọi, mà tìm LẠI mỗi lần bạn thao tác (fill, click...). Nhờ vậy nếu trang đang tải hay phần tử chưa xuất hiện kịp, Playwright tự tìm lại thay vì báo lỗi ngay.
Cách tạo locator theo id của phần tử HTML:
page.locator("#name")
#name là CSS selector — dấu # nghĩa là tìm theo thuộc tính id="name".
Ngoài CSS selector, Playwright còn có nhóm hàm get_by_* — tìm theo cách người dùng thật nhìn thấy trang (vai trò, chữ hiển thị...) thay vì phụ thuộc cấu trúc HTML. Vài locator hay dùng nhất:
| Locator | Tìm theo gì |
|---|---|
| page.locator("#id" hoặc ".class") | CSS selector — id, class, thẻ HTML |
| page.get_by_role("button", name="Submit") | Vai trò (role) + tên hiển thị — cách được khuyến khích nhất |
| page.get_by_text("Xin chào") | Đoạn chữ hiển thị trên trang |
| page.get_by_label("Email") | Nhãn <label> gắn với ô nhập |
| page.get_by_placeholder("Nhập email") | Chữ gợi ý (placeholder) trong ô nhập |
| page.get_by_test_id("submit-btn") | Thuộc tính data-testid — ổn định nhất, không đổi khi sửa giao diện |
Thứ tự ưu tiên Playwright khuyến nghị: get_by_role / get_by_test_id trước tiên (ổn định, gần với người dùng thật) — CSS selector theo id/class chỉ nên dùng khi trang không có role hoặc test id rõ ràng.