Codegen
Duy Văn | 06/02/2025
Playwright có một công cụ rất hữu ích giúp chúng ta tạo ra code tự động từ các thao tác trên trình duyệt, giúp chúng ta tiết kiệm thời gian viết code và giảm thiểu lỗi, nó là Codegen. Về cơ bản công cụ này sẽ mở ra một trình duyệt mới, chúng ta thực hiện các thao tác trên trình duyệt, sau đó công cụ sẽ tạo ra code Python dựa trên các thao tác mà chúng ta đã thực hiện.
Để sử dụng công cụ này, chúng ta cần cài đặt Playwright Python và sau đó chạy lệnh sau:
playwright codegen https://playwright.dev/
Thật ra chúng ta cũng chẳng cần đưa url vào, vì sau khi chạy lệnh trên, công cụ sẽ mở ra một trình duyệt mới, việc điền url vào thanh địa chỉ rồi ấn enter sẽ được gói gọn trong dòng
page.goto('https://playwright.dev/')
Giao diện Codegen rất dễ làm việc, mình sẽ không nói qua quá nhiều ở đây
Practice
Vấn đề ở chỗ, việc gen code ra dùng tool này chỉ mang tính chất mì ăn liền, theo practice chuẩn của dân test, chúng ta cần viết lại đoạn code theo POM
- Lấy ra các element cần tương tác, đẩy vào thành attribute của Class tương ứng với pagge
- Viết các method tương ứng với các thao tác trên element đó
- Viết các test case sử dụng các method trên
Ví dụ, sau khi gen code, chúng ta sẽ có một đoạn code như sau:
from playwright.sync_api import sync_playwright
def run(playwright):
browser = playwright.chromium.launch(headless=False)
page = browser.new_page()
page.goto("https://playwright.dev/")
page.click("text=Get Started")
browser.close()
Chúng ta sẽ viết lại thành:
from playwright.sync_api import Page
class PlaywrightPage(Page):
def __init__(self, page):
self.page = page
def click_get_started(self):
self.page.click("text=Get Started")
def run(self):
self.click_get_started()
self.click_installation()
Ví dụ thế, rồi để chạy
from playwright.sync_api import sync_playwright
def run(playwright):
browser = playwright.chromium.launch(headless=False)
page = browser.new_page()
page.goto("https://playwright.dev/")
PlaywrightPage(page).run()
browser.close()