44 điểm bởi xguru 2022-11-14 | 4 bình luận | Chia sẻ qua WhatsApp
  • Selenium từng gần như là tiêu chuẩn thực tế cho tự động hóa/kiểm thử web
    • Dễ bắt đầu và hỗ trợ gần như mọi ngôn ngữ lập trình
    • Đủ dùng, nhưng cũng chỉ đến thế
    • Không hoạt động tốt trên các website dùng framework JavaScript hiện đại (Angular, React, ..)
      → Không phải là không chạy được, mà là không chạy thật sự tốt
    • Dù được nói là có tài liệu tốt, nhưng trên thực tế chỉ cần làm gì đó hơi lệch khỏi luồng chính là rất khó tìm ví dụ
  • Đã thử dùng các công cụ như Chai, Mocha, Cypress, nhưng cấu hình hoàn toàn khác và với lập trình viên Python thì không hề dễ
  • Hàng chục công cụ thay thế Selenium đã được tạo ra, nhưng phần lớn biến mất chỉ sau vài năm

Enter Playwright

  • Rất xuất sắc, và quan trọng hơn là do Microsoft tạo ra. Có khả năng sẽ được hỗ trợ lâu dài
  • Tính năng sát thủ của Playwright là "tự động tạo test"
    • Mở trình duyệt và thực hiện từng bước, nó sẽ ghi lại rồi tạo thành script Python
    • Giảm bớt công sức phải tìm XPath và những thứ tương tự như trong Selenium
    • Các bước được lưu theo cách này hầu như có thể chạy ngay mà không cần chỉnh sửa
  • Một ưu điểm khác là có thể lưu quá trình chạy thành video để xem lại
  • Nhược điểm duy nhất là nó vẫn còn mới. Vẫn còn nhiều lỗi và tài liệu chưa tốt
  • Nhưng xét tổng thể, với mọi dự án mới, tôi có lẽ sẽ chọn Playwright

4 bình luận

 
yangeok 2022-11-21

Từ góc độ một người đã dùng puppeteer rồi chuyển hẳn sang playwright thành công để onboarding, tôi cho rằng chỉ riêng tính năng codegen của playwright cũng đã đủ giá trị để chuyển sang.

 
joone 2022-11-15

Với lập trường là chỉ dùng Puppeteer trong thời gian dài và chỉ dùng Node. Việc chuyển sang Playwright quả thật không dễ để quyết ngay được.

 
kunggom 2022-11-15

Thay vì nghĩ ngay đến việc chuyển dự án hiện có, trước tiên khi bắt đầu dự án mới, tại sao không tích cực cân nhắc áp dụng Playwright? Hoặc bắt đầu một dự án đồ chơi cũng có vẻ là ý hay.

 
kbumsik 2022-11-14

Có vẻ như Playwright có API nhất quán giữa các ngôn ngữ (JS, Python) và gọn gàng hơn một chút.
Đặc biệt với Python thì hỗ trợ async rất tốt hehe