Selenium
Hỗ trợ nhiều ngôn ngữ: Java, Python, C#, Ruby, JavaScript, Kotlin.
Cộng đồng lớn, lâu đời (ra mắt từ 2004).
Playwright
Ban đầu chỉ hỗ trợ JavaScript/TypeScript, sau đó mở rộng thêm Python, Java, .NET.
Số lượng ngôn ngữ ít hơn Selenium, nhưng hiện đã đủ phổ biến để dùng trong hầu hết dự án.
👉 Kết luận: Selenium đa dạng hơn, nhưng Playwright đang bắt kịp nhanh chóng.
Selenium
Dựa trên WebDriver Protocol (JSON Wire Protocol/W3C).
Cần driver riêng cho từng browser (ChromeDriver, GeckoDriver, EdgeDriver...).
Nhiều khi lỗi version mismatch giữa browser và driver.
Playwright
Giao tiếp trực tiếp với browser thông qua DevTools Protocol (không qua middle driver).
Hỗ trợ headless, automation nhanh và ổn định hơn.
Cài đặt dễ: chỉ cần npm install playwright
là tải luôn cả browser (Chromium, Firefox, WebKit).
👉 Kết luận: Playwright hiện đại, ổn định hơn, Selenium phụ thuộc driver nhiều.
Selenium
Chrome, Firefox, Edge, Safari, IE (legacy).
Hỗ trợ tốt cross-platform (Windows, Linux, macOS).
Mobile: Selenium Grid + Appium.
Playwright
Chromium (Chrome, Edge), Firefox, WebKit (Safari engine).
Hỗ trợ mobile emulation (device viewport, geolocation, permissions...) mà không cần Appium.
Tuy nhiên, test native mobile app thì vẫn cần Appium.
👉 Kết luận: Selenium mạnh khi đi cùng Appium (native + web app), Playwright tiện cho mobile web & emulation.
Selenium
Chậm hơn do đi qua WebDriver protocol.
Nhiều thao tác cần wait
, dễ gặp flaky test.
Playwright
Nhanh hơn nhiều vì dùng DevTools Protocol.
Có auto-waiting (tự chờ element xuất hiện, load xong mới thao tác).
Ít flaky test hơn.
👉 Kết luận: Playwright nhanh và ổn định hơn rõ rệt.
Selenium
API lâu đời, cú pháp dài hơn.
Nhiều khi phải kết hợp thêm thư viện ngoài cho wait/handling advanced cases.
Playwright
API hiện đại, ngắn gọn.
Hỗ trợ built-in cho nhiều thao tác khó:
Auto-wait
Network interception
Multi-tab, multi-page
File upload/download
Mouse, keyboard, touchscreen events.
👉 Kết luận: Playwright dễ dùng và code nhanh hơn Selenium.
Selenium
Có Selenium Grid để chạy song song, cross-browser.
Tuy nhiên, cấu hình Grid phức tạp.
Playwright
Built-in parallel execution.
Có Playwright Test Runner đi kèm, dễ tích hợp CI/CD.
👉 Kết luận: Playwright dễ setup hơn, Selenium mạnh khi scale lớn nhờ Grid.
Selenium
Không có sẵn test runner/reporter.
Thường kết hợp với TestNG, JUnit, PyTest, Mocha, Allure, Extent Report…
Playwright
Đi kèm Playwright Test Runner với HTML reports, trace viewer, video recording.
Debug dễ hơn (snapshot DOM, replay step by step).
👉 Kết luận: Playwright tích hợp sẵn, Selenium phải ghép thêm nhiều công cụ.
Selenium
Lâu đời, cộng đồng lớn, nhiều tài liệu, nhiều integration.
Được dùng nhiều trong doanh nghiệp lớn, lâu năm.
Playwright
Cộng đồng nhỏ hơn, nhưng đang phát triển rất nhanh.
Được hỗ trợ bởi Microsoft.
Nhiều framework hiện đại (như QA Wolf, Checkly) đang chọn Playwright thay vì Selenium.
👉 Kết luận: Selenium “cổ điển nhưng vững chắc”, Playwright “trẻ nhưng bùng nổ nhanh”.
Tiêu chí | Selenium | Playwright |
---|---|---|
Ngôn ngữ | Java, Python, C#, JS, Ruby... | JS/TS, Python, Java, .NET |
Kiến trúc | WebDriver Protocol | DevTools Protocol |
Cài đặt | Cần driver cho từng browser | Tự tải browser đi kèm |
Trình duyệt | Chrome, Firefox, Edge, Safari, IE | Chromium, Firefox, WebKit |
Mobile | Appium (native/web) | Mobile emulation (chưa native) |
Hiệu năng | Chậm hơn, flaky | Nhanh, auto-wait, ổn định |
Test Runner | Không có sẵn | Có sẵn (Playwright Test) |
Parallel | Selenium Grid (khó config) | Built-in |
Báo cáo | Cần thư viện ngoài | Có sẵn (HTML, trace, video) |
Cộng đồng | Lớn, lâu đời | Mới, phát triển nhanh |
✅ Kết luận tổng quan:
Dùng Selenium nếu bạn cần:
Hệ sinh thái cũ, nhiều ngôn ngữ lạ (Ruby, Kotlin…).
Kết hợp Appium để test native mobile app.
Tích hợp vào framework doanh nghiệp lâu năm.
Dùng Playwright nếu bạn muốn:
Bắt đầu mới, ưu tiên tốc độ & độ ổn định.
Hỗ trợ tốt web hiện đại (SPA, Angular, React, Vue).
Debug trực quan, báo cáo đẹp, CI/CD dễ dàng.
👉 File: GoogleSearchTest.java
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class GoogleSearchTest {
public static void main(String[] args) {
// Khởi tạo ChromeDriver (cần driver phù hợp với version Chrome)
WebDriver driver = new ChromeDriver();
// Mở Google
driver.get("https://www.google.com");
// Tìm ô input và nhập từ khóa
WebElement searchBox = driver.findElement(By.name("q"));
searchBox.sendKeys("Anh Tester");
searchBox.sendKeys(Keys.ENTER);
// In tiêu đề
System.out.println("Page title: " + driver.getTitle());
// Đóng browser
driver.quit();
}
}
✅ Nhận xét:
API hơi dài dòng. Cần phải chỉ định rõ ràng loại XPath hay CSS, ID,...
Không có auto-wait, phải cần dùng WebDriverWait
.
👉 File: google-search.js
const { chromium } = require('playwright');
(async () => {
// Khởi tạo browser
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();
// Mở Google
await page.goto('https://www.google.com');
// Nhập từ khóa
await page.fill('input[name="q"]', 'Anh Tester');
await page.keyboard.press('Enter');
// Playwright tự động wait, chỉ cần chờ kết quả xuất hiện
await page.waitForSelector('h3');
// In tiêu đề
console.log('Page title:', await page.title());
// Đóng browser
await browser.close();
})();
✅ Nhận xét:
API ngắn gọn và nhiều hàm hỗ trợ xử lí hơn Selenium, rất tiện lợi.
Có auto-wait, code gọn hơn.
Debug dễ hơn (headless: false
), có cái TraceViewer hỗ trợ khá mạnh.
📌 Tổng kết:
Selenium Java: vẫn phù hợp để làm auto web, tuy nhiên cần học và am hiểu sâu để custom, kết hợp Appium để auto Mobile ngon.
Playwright JS: code hiện đại, dễ viết, chạy nhanh, hợp với dự án web dạng UI mới (React, Angular, Vue…). Chưa hỗ trợ auto mobile native.
✅ Ưu điểm cho người mới:
Tài liệu, tutorial nhiều nhất (Google, StackOverflow, YouTube, Chat AI đều có).
Nhiều ngôn ngữ hỗ trợ: Java, Python, C#, JS, PHP,… bạn học ngôn ngữ nào cũng có Selenium.
Làm quen với khái niệm cơ bản trong automation test: WebDriver, Locator, Wait, Assertion…
Được dùng rộng rãi trong các công ty lâu năm → dễ xin việc.
❌ Nhược điểm với người mới:
Cài đặt hơi phức tạp (phải setup driver, version phù hợp với trình duyệt).
Dễ gặp flaky test nếu chưa hiểu sâu về wait.
API dài dòng, đôi khi hơi khó nhớ.
Flaky Test = test case automation mà kết quả không ổn định:
Có lúc chạy pass, có lúc chạy fail mặc dù code của ứng dụng không thay đổi.
Nói cách khác:
Test không phản ánh đúng trạng thái thật sự của ứng dụng.
Gây mất niềm tin vào bộ code test automation. (chứ nó lúc chạy ngon lúc chết ngang thì ai chịu nổi 😝)
Nói vậy thôi chứ nếu học tại Anh Tester dạy bạn phần này rất kỹ và sâu nên không xảy ra chuyện này được đâu 😋
✅ Ưu điểm cho người mới:
Cài đặt siêu nhanh (chỉ cần npm install playwright
hoặc pip install playwright
).
Không cần lo driver, browser đã tích hợp.
API hiện đại, gọn, dễ nhớ → học nhanh hơn.
Có sẵn auto-wait, test runner, báo cáo HTML, video, trace → ít phải ghép nhiều tool.
Debug trực quan (có trace viewer, chụp ảnh DOM theo step).
❌ Nhược điểm với người mới:
Cộng đồng chưa lớn bằng Selenium.
Hỗ trợ ít ngôn ngữ hơn, mạnh nhất vẫn là JavaScript/TypeScript.
Ít được dạy trong các khóa học cũ/truyền thống.
👉 Nếu mục tiêu của bạn là:
Xin việc nhanh, học nền tảng căn bản, dễ tìm tài liệu → bắt đầu với Selenium (Java hoặc Python).
Học nhanh, làm dự án web hiện đại, muốn thấy kết quả đẹp & trực quan → bắt đầu với Playwright (JS/TS hoặc Python).
📌 Kinh nghiệm thực tế:
Rất nhiều tester học Selenium trước để hiểu cơ bản.
Sau đó học thêm Playwright để nắm công cụ mới, code gọn và debug dễ hơn.
👉 Tóm gọn:
Người mới học để đi làm → Selenium (Java/Python).
Người mới học để thử automation nhanh, hiện đại → Playwright (JS/Python).
Anh Tester
Đường dẫu khó chân vẫn cần bước đi
Đời dẫu khổ tâm vẫn cần nghĩ thấu