Playwright vs Selenium: Chọn Tool Automation Nào Cho Tester Fresher?

5 tháng trước · 19 phút đọc
Playwright và Selenium đang đứng ở đâu năm 2025?
Mình nhớ hồi mới học automation, câu hỏi đầu tiên mình Google là: "nên học Selenium hay Playwright?". Tìm cả tiếng thì toàn câu trả lời mâu thuẫn nhau - người bảo Selenium là chuẩn, người bảo Playwright mới là tương lai. Mình đoán bạn đang trong tình huống tương tự.
Sự thật là: cả hai đều đang được dùng thực tế ở Việt Nam. Không có "đúng" hay "sai" tuyệt đối. Nhưng với fresher, chọn sai tool để học trước có thể mất thêm 2-3 tháng - hoặc tệ hơn, bỏ cuộc vì thấy khó quá.
Bài này mình sẽ phân tích thẳng: tool nào phù hợp cho bạn, dựa trên thực tế thị trường tuyển dụng và dự án ở Việt Nam - không phải lý thuyết trên paper.
Hai tool, hai hướng đi - quan trọng là chọn đúng từ đầu
Theo khảo sát Stack Overflow Developer Survey 2024, Playwright đang tăng trưởng mạnh trong cộng đồng tester toàn cầu, trong khi Selenium vẫn giữ vị trí top về độ phổ biến doanh nghiệp. Ở Việt Nam, bức tranh có phần khác một chút - mình sẽ nói rõ ở phần sau.
Selenium: Người anh cả 20 năm kinh nghiệm
Selenium ra đời năm 2004. Tính đến nay, 22 (ukdataservices.co.uk) năm tuổi - trong thế giới công nghệ, đây là con số khổng lồ. Điều đó nghĩa là gì?
Ưu điểm thực tế của Selenium:
- Cộng đồng cực lớn: Stack Overflow có hơn 110K+ (tech-insider.org) câu hỏi về Selenium. Bạn gặp lỗi gì, gần như chắc chắn đã có người hỏi và trả lời rồi.
- Hỗ trợ đa ngôn ngữ: Java, Python, C#, Ruby, JavaScript. Dự án đang dùng Java? Selenium có. Python? Selenium có.
- Nhiều JD tuyển dụng hơn: Ở Việt Nam, phần lớn công ty outsourcing (đặc biệt làm cho khách Nhật, Hàn) vẫn đang chạy Selenium + Java/Python trên framework cũ.
- Selenium Grid: Chạy test song song trên nhiều máy, nhiều browser - phù hợp dự án enterprise lớn.
Selenium vẫn chiếm đa số JD tuyển dụng outsourcing Việt Nam
Nhược điểm - nói thật luôn:
Selenium không có built-in wait thông minh. Bạn sẽ phải tự viết WebDriverWait mỗi khi chờ element load. Mình từng mất cả buổi debug chỉ vì cái StaleElementReferenceException - phần tử vừa tìm được, DOM thay đổi, là mất. Với React/Vue app hiện đại render liên tục, đây là nỗi đau thật.
Cài đặt cũng không dễ. ChromeDriver phải khớp với version Chrome đang dùng - nghe có vẻ nhỏ, nhưng mình biết nhiều bạn fresher bỏ cuộc ngay bước cài đặt. Selenium 4 đã cải thiện phần này với Selenium Manager, nhưng vẫn chưa hoàn hảo.
Setup một project Selenium từ đầu với Java mất khoảng 2-3 ngày nếu bạn chưa quen Maven/Gradle, TestNG, và cấu trúc Page Object Model.
Playwright: Người mới nhưng làm được nhiều hơn
Microsoft ra mắt Playwright năm 2020. Chỉ 5 năm, nhưng tốc độ phát triển gây sốc.
Playwright được thiết kế để giải quyết đúng vấn đề Selenium để lại
Playwright giỏi hơn Selenium ở đâu?
Mình thích cách Playwright xử lý chờ đợi nhất. Thay vì bạn phải WebDriverWait(driver, 10).until(...) mỗi lần, Playwright tự động chờ element sẵn sàng trước khi tương tác. Viết page.click('#submit') - nó tự biết chờ button load xong rồi mới click. Với app React/Vue, điều này tiết kiệm ít nhất 30% thời gian debug flaky test.
Tốc độ nhanh hơn đáng kể. Playwright chạy test parallel mặc định, và dùng browser context thay vì mở browser mới hoàn toàn cho mỗi test. Kết quả thực tế: test suite 100 test cases chạy trong khoảng 3-4 phút so với 8-10 phút của Selenium (tùy dự án).
Playwright Codegen - tính năng mình hay dùng để giới thiệu cho fresher. Bạn record thao tác trên browser, nó tự tạo code. Không cần biết selector, không cần nhớ cú pháp. Để học cách tool hoạt động, đây là shortcut cực tốt.
Thêm vào đó: built-in test reporter đẹp, trace viewer để debug, hỗ trợ API testing ngay trong framework - không cần cài thêm gì.
Nhược điểm của Playwright:
Cộng đồng còn nhỏ hơn Selenium - khi gặp lỗi edge case, đôi khi phải tự debug hoặc đọc source code. JD tuyển dụng Playwright tại Việt Nam vẫn ít hơn, chủ yếu ở công ty product, startup, hoặc outsource làm cho khách Mỹ/Châu Âu. Playwright chỉ hỗ trợ JavaScript/TypeScript, Python, Java, C# - không có Ruby.
So sánh thẳng: Bảng đối chiếu cho fresher
Nhiều bài blog so sánh Playwright vs Selenium theo tiêu chí kỹ thuật - tốc độ, tính năng, hệ sinh thái. Nhưng với fresher, câu hỏi thực tế hơn là: cái nào dễ học hơn, và cái nào giúp xin việc nhanh hơn?
Nhìn bảng này trước khi quyết định bắt đầu với tool nào
| Tiêu chí | Selenium | Playwright |
|---|---|---|
| Độ khó setup ban đầu | Trung bình - cao | Thấp (5-10 phút) |
| Thời gian viết test case đầu tiên | 1-2 ngày | Vài giờ |
| Auto-wait | Không (tự viết) | Có (built-in) |
| Ngôn ngữ hỗ trợ | Java, Python, C#, Ruby, JS | JS/TS, Python, Java, C# |
| Số JD tuyển dụng VN (outsource) | Nhiều hơn | Ít hơn |
| Số JD tuyển dụng VN (product/startup) | Ít hơn | Tăng nhanh |
| Debug lỗi | Khó hơn với app hiện đại | Trace viewer trực quan |
| Codegen (tự tạo code) | Không | Có |
| Cộng đồng & tài liệu | Rất lớn | Tốt, đang tăng |
| Phù hợp học đầu tiên | Nếu mục tiêu outsource | Nếu mục tiêu product/startup |
Nhìn bảng này, bạn thấy không có tool nào "thắng" tuyệt đối. Bạn sẽ chọn dựa trên loại công ty bạn muốn apply, không phải dựa trên tool nào "tốt hơn về kỹ thuật".
Thực tế thị trường Việt Nam: Doanh nghiệp đang dùng gì?
Mình hay xem JD tuyển tester trên TopCV, ITviec và LinkedIn để hiểu thị trường. Dưới đây là những gì mình quan sát được, không phải số liệu khảo sát chính thức - nên hãy kiểm chứng thêm nhé.
Phân khúc thị trường quyết định tool bạn nên học trước
Công ty outsourcing (làm dự án Nhật, Hàn, Đài Loan): Đây là phân khúc tuyển nhiều fresher nhất. Selenium + Java hoặc Selenium + Python vẫn là combo phổ biến nhất ở mảng này. Lý do đơn giản: các dự án cũ đã viết bằng Selenium từ 5-7 năm trước, không ai muốn migrate. Bạn vào là phải maintain và extend framework có sẵn.
Công ty outsourcing (làm dự án Mỹ, Châu Âu, Úc): Playwright đang xuất hiện nhiều hơn ở đây, đặc biệt dự án mới bắt đầu từ 2022 trở đi. TypeScript + Playwright là combo được nhắc đến khá thường. Cypress cũng cạnh tranh mạnh trong phân khúc này.
Startup và công ty product: Playwright hoặc Cypress. Hiếm khi thấy Selenium ở đây trừ các công ty đã dùng nhiều năm. Startup thích Playwright vì setup nhanh, maintain ít, và JavaScript/TypeScript là ngôn ngữ quen thuộc với team.
Ngân hàng, fintech, bảo hiểm: Selenium + Java vẫn là king. Một phần vì đội dev Java nhiều, một phần vì quy trình phê duyệt tool mới cực kỳ chậm.
Tóm lại: Nếu bạn muốn vào outsourcing nhanh nhất - học Selenium trước. Nếu bạn nhắm đến startup hoặc công ty product - Playwright là lựa chọn tốt hơn.
Bắt đầu với Selenium: Hướng dẫn cho fresher
Bạn đã quyết định học Selenium? Tốt. Đây là con đường nhanh nhất để bắt đầu - không phải tutorial dài 10 tiếng trên YouTube.
Bước 1: Cài đặt môi trường (Python - dễ hơn cho người mới)
Mình khuyên Python thay vì Java cho fresher học Selenium lần đầu. Ít boilerplate code hơn, dễ đọc hơn.
Bước 2: Test case đầu tiên - trang Google
Test case đầu tiên chạy được là cột mốc quan trọng nhất
Bước 3: Học Page Object Model (POM) - QUAN TRỌNG
Không cần học POM ngay ngày đầu, nhưng phải học trước khi đi phỏng vấn. Gần như 100% công ty hỏi về POM trong vòng phỏng vấn automation tester.
POM là cách tổ chức code: mỗi trang web là 1 class Python, chứa selector và action của trang đó. Test case chỉ gọi method từ class, không viết selector lộn xộn.
Lộ trình học Selenium (4-6 tuần):
- Tuần 1: Cài đặt, viết test đơn giản, hiểu locator (id, name, xpath, css)
- Tuần 2-3: WebDriverWait, xử lý alert/iframe/dropdown
- Tuần 4: Page Object Model
- Tuần 5-6: Tích hợp pytest + tạo báo cáo HTML
Tải checklist học Selenium đầy đủ: Checklist học Selenium 6 tuần
Bắt đầu với Playwright: Hướng dẫn cho fresher
Playwright setup nhanh hơn đáng kể. Từ zero đến test case đầu tiên chạy được, bạn chỉ cần khoảng 20-30 phút.
Bước 1: Cài đặt (dùng Node.js + TypeScript)
Bước 2: Test case đầu tiên - trang đăng nhập
Playwright report tích hợp sẵn, không cần cài thêm
Bước 3: Thử Codegen - tính năng "ăn gian" cực hay
Bạn không cần nhớ cú pháp getByRole, getByPlaceholder, getByTestId. Record xong, copy code, chỉnh sửa theo ý. Với người mới, đây là cách học selector nhanh nhất.
Lộ trình học Playwright (3-4 tuần):
- Tuần 1: Setup, Codegen, viết test cơ bản
- Tuần 2: Locator strategies, assertions, fixtures
- Tuần 3: Page Object Model, API testing
- Tuần 4: Parallel, CI/CD với GitHub Actions
Nếu bạn biết JavaScript cơ bản, lộ trình này rút ngắn được 1 tuần. Nếu chưa biết JS, mình gợi ý xem qua Lập Trình JavaScript Cơ Bản trên F8 - miễn phí và cover đúng phần bạn cần để hiểu Playwright.
Tải checklist học Playwright đầy đủ: Checklist học Playwright 4 tuần
Case study: Dự án thực tế ở Việt Nam
Mình sẽ chia sẻ 2 tình huống điển hình mình gặp - không đặt tên nhân vật, chỉ mô tả tình huống thật.
Tình huống 1 - Outsource cho khách Nhật:
Một bạn fresher apply vào team QA của công ty outsource, dự án là hệ thống quản lý nội bộ cho khách Nhật. Team đang chạy Selenium + Java + TestNG từ 4 năm trước. Framework có sẵn, bạn fresher vào là phải đọc code, hiểu POM đã được viết, rồi extend thêm test case mới.
Tuần đầu: đọc code cũ, hiểu cấu trúc. Tuần 2-3: viết thêm 15-20 test case theo template có sẵn. Không cần setup, không cần thiết kế framework từ đầu. Kỹ năng cần có khi phỏng vấn: biết locator, biết WebDriverWait, biết POM là gì. Thực ra không khó.
Fresher gia nhập framework sẵn thường ổn hơn xây từ đầu
Tình huống 2 - Startup fintech:
Một team startup 15 người, tester là người thứ 2 trong team QA. Không có framework cũ. Lead tester quyết định dùng Playwright + TypeScript vì dev đang dùng React + TypeScript, share được locator và type definitions.
Bạn fresher này phải học Playwright từ đầu, nhưng được support từ lead. Sau 3 tuần, tự viết E2E test cho flow thanh toán và đăng ký tài khoản. Playwright Codegen giúp bạn tạo selector nhanh, Trace Viewer giúp debug khi test fail mà không biết tại sao.
Điểm khác biệt rõ nhất: ở startup, bạn phải tự chủ hơn, nhưng học được nhiều hơn. Ở outsource, an toàn hơn nhưng ít sáng tạo hơn.
Cả 2 tình huống đều có fresher thành công - quan trọng là bạn chọn đúng môi trường phù hợp với bản thân, rồi học đúng tool cho môi trường đó.
Checklist: Khi nào dùng tool nào để xin việc nhanh
Thay vì đọc lý thuyết, mình tổng hợp thành checklist thực dụng. Trả lời từng câu, xem kết quả ở cuối.
Trả lời 5 câu hỏi này - bạn sẽ biết mình nên học tool gì
Trả lời các câu hỏi dưới đây:
1. Loại công ty bạn muốn apply là gì?
- Outsource (Nhật/Hàn/Đài Loan) → điểm Selenium +2
- Outsource (Mỹ/Châu Âu) → điểm Playwright +1, Selenium +1
- Startup hoặc product company → điểm Playwright +2
- Ngân hàng/fintech lớn → điểm Selenium +2
2. Bạn có background kỹ thuật không?
- Đã biết Java/Python → Selenium dễ vào hơn
- Đã biết JavaScript/TypeScript → Playwright dễ vào hơn
- Chưa biết ngôn ngữ lập trình nào → Playwright Python dễ bắt đầu hơn
3. Bạn muốn xin việc trong bao lâu?
- Dưới 3 tháng → Selenium (nhiều JD hơn, framework có sẵn ở hầu hết công ty outsource)
- 3-6 tháng → Playwright (ít JD hơn nhưng tăng trưởng nhanh)
4. Dự án bạn sẽ test là gì?
- Web app React/Vue/Angular (app SPA hiện đại) → Playwright xử lý tốt hơn
- Web app cũ (jQuery, server-side rendering) → Selenium ổn
- Mobile app → cả hai không phải lựa chọn tốt nhất (cần Appium)
5. Team bạn đang có dùng gì?
- Nếu team đang dùng Selenium → học Selenium để contribute ngay
- Nếu team đang dùng Playwright → học Playwright
- Nếu chưa có team → dựa vào 4 câu trên
Kết quả:
- Nhiều điểm Selenium hơn → Bắt đầu với Selenium + Python (outsource nhanh nhất)
- Nhiều điểm Playwright hơn → Bắt đầu với Playwright + TypeScript (startup/product)
- Bằng nhau → Học Playwright trước (setup nhanh hơn, ít đau đầu hơn, tương lai rộng hơn)
Tải file checklist đầy đủ để in ra và điền: Tải checklist chọn tool Playwright vs Selenium
Câu hỏi phỏng vấn thường gặp về Playwright và Selenium
Biết dùng tool chưa đủ. Phỏng vấn automation tester còn hỏi về lý thuyết và khả năng giải thích. Mình tổng hợp câu hỏi hay gặp nhất.
Câu hỏi chung cho cả hai tool:
- "Bạn có thể giải thích Page Object Model là gì và tại sao cần dùng?"
- "Khi test fail, bạn debug bằng cách nào?"
- "Flaky test là gì? Bạn xử lý thế nào?"
- "Bạn chọn locator như thế nào cho ổn định?"
Phỏng vấn hỏi lý do bạn chọn cái này hơn cái kia - hãy có câu trả lời sẵn
Câu hỏi đặc thù Selenium:
- "Khác nhau giữa implicit wait và explicit wait là gì?"
- "Giải thích StaleElementReferenceException và cách fix?"
- "Selenium Grid dùng để làm gì?"
- "Bạn tổ chức project theo cấu trúc nào? (TestNG, Maven, POM)"
Câu hỏi đặc thù Playwright:
- "Playwright khác Selenium ở điểm nào? Tại sao bạn chọn Playwright?"
- "Auto-waiting trong Playwright hoạt động như thế nào?"
- "Trace Viewer dùng để làm gì?"
- "Bạn đã dùng API testing trong Playwright chưa?"
Một điểm mình nhấn mạnh: đừng học vẹt câu trả lời. Interviewer sẽ hỏi follow-up ngay. Hiểu tại sao, rồi trả lời bằng lời của bạn - dù ngắn hơn, vẫn thuyết phục hơn câu trả lời "đúng sách" mà không hiểu.
Với fresher trái ngành, câu hỏi hay được thêm vào là: "Bạn tự học thế nào? Có project thực hành nào chưa?" - đây là lúc portfolio GitHub có test case thật của bạn phát huy tác dụng.
Kết luận: Test kỹ từ đầu, không phải vội về sau
Nhiều bạn hỏi mình: "Học cả hai được không?" - Được, nhưng đừng học song song cùng lúc. Học xong một tool đến mức viết được test case thực tế, đi phỏng vấn được, rồi mới học thêm cái kia. Học hai thứ cùng lúc, biết cả hai mà không thành thạo cái nào - không giúp được gì trong phỏng vấn.
Lộ trình mình hay gợi ý:
Nếu bạn chưa có kinh nghiệm automation nào, bắt đầu với Playwright + Python - setup đơn giản, auto-wait giảm nhiều lỗi vặt, cú pháp Python dễ đọc. Dùng Codegen để hiểu cách locator hoạt động. Sau 4-6 tuần, bạn có đủ để đi phỏng vấn junior automation tester.
Sau khi có việc, bạn sẽ gặp Selenium ở nhiều công ty - lúc đó học thêm 2-3 tuần là OK vì bạn đã hiểu automation concept rồi, chỉ cần map sang cú pháp Selenium.
Thành thạo 1 tool > biết sơ 2 tool - câu này đúng với tester fresher
Mình từng bỏ qua bước thực hành, chỉ đọc lý thuyết về Selenium suốt 2 tuần. Kết quả? Đến khi ngồi xuống viết test case thật, vẫn không biết bắt đầu từ đâu. Bài học: setup ngay từ ngày đầu, viết test case thật từ ngày đầu - dù test case đó chỉ là "mở browser, vào Google, đóng lại".
Tóm lại:
- Xác định loại công ty muốn apply
- Dùng checklist ở phần trước để chọn tool
- Setup môi trường ngay hôm nay, không chờ "học thêm lý thuyết"
- Viết 20-30 test case thật, push lên GitHub
- Apply job, đề cập portfolio trong CV
Thấy khó ở bước nào cứ comment bên dưới, mình trả lời từng bạn. Chúc bạn xin việc thành công!
