[MẸO] Thủ thuật Python/Playwright

By khoanc, at: 10:03 Ngày 02 tháng 9 năm 2023

Thời gian đọc ước tính: __READING_TIME__ minutes

[TIPS] Python/Playwright Tricks
[TIPS] Python/Playwright Tricks

Playwright là một công cụ mạnh mẽ để tự động hóa và kiểm thử các ứng dụng web, cung cấp hỗ trợ đa trình duyệt và tốc độ thực thi cao. Khi sử dụng Playwright với Python, có một số thủ thuật và các thực tiễn tốt nhất mà bạn có thể tận dụng để nâng cao hiệu quả và hiệu suất kiểm thử của mình.

 

1. Tận dụng Locators

 

Sử dụng tính năng locator của Playwright để tương tác với các phần tử trên trang thay vì dựa vào XPath hoặc CSS selectors. Locators cung cấp một cách đáng tin cậy và hiệu quả hơn để tìm các phần tử, thích ứng với các thay đổi giao diện người dùng một cách uyển chuyển hơn.

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto('https://example.com')
    locator = page.locator('text="Example Domain"')
    assert locator.count() == 1
    browser.close()

 

2. Sử dụng Web-First Assertions

 

Áp dụng web-first assertions để đảm bảo rằng các bài kiểm tra chờ đợi các điều kiện cần thiết trước khi tiếp tục, giảm thiểu kết quả kiểm tra không ổn định. Playwright cung cấp các assertion tích hợp sẵn như to_be_visibleto_have_text.

page.goto('https://example.com')
page.locator('h1').wait_for(state='visible')
assert page.locator('h1').text_content() == 'Example Domain'

 

3. Áp dụng Song song và Sharding

 

Tối đa hóa tốc độ thực thi kiểm tra bằng cách chạy các bài kiểm tra song song và sử dụng sharding. Playwright hỗ trợ chạy các bài kiểm tra trên nhiều worker, điều này có thể làm giảm đáng kể thời gian kiểm tra.

pytest -n auto --dist=loadscope

 

4. Thực hiện Kiểm thử Hồi quy Hình ảnh

 

Kiểm thử hồi quy hình ảnh giúp xác định các thay đổi giao diện người dùng không mong muốn. Sử dụng phương pháp toHaveScreenshot của Playwright để chụp và so sánh ảnh chụp màn hình.

page.goto('https://example.com')
page.screenshot(path='screenshot.png')

 

5. Gỡ lỗi và Thông tin Kiểm thử

 

Sử dụng pytest-playwright để tăng cường khả năng gỡ lỗi trong các bài kiểm tra của bạn. Bạn có thể chạy các bài kiểm tra ở chế độ "headed" để quan sát các hành động của trình duyệt một cách trực quan. Sử dụng tùy chọn --headed để xem trình duyệt khi các bài kiểm tra đang thực thi:

pytest --headed


Để có cái nhìn sâu sắc hơn, hãy sử dụng Playwright Inspector với page.pause(), cho phép bạn bước qua các hành động tương tác và kiểm tra các phần tử trực tiếp:

def test_example(page):
    page.goto('https://example.com')
    page.pause()  # Mở Playwright Inspector để gỡ lỗi
    assert page.title() == 'Example Domain


Cách tiếp cận này giúp bạn hiểu rõ hơn về hành vi kiểm tra và nhanh chóng xác định các vấn đề trong quá trình phát triển. Hãy cho tôi biết nếu có bất cứ điều gì khác bạn muốn điều chỉnh!

 

6. Mock các cuộc gọi API

 

Tăng tốc độ kiểm tra bằng cách mock các cuộc gọi API và chỉ tập trung vào các yêu cầu cần thiết. Điều này có thể giúp giảm thiểu sự không ổn định của kiểm tra và cải thiện tốc độ thực thi.

page.route('**/api/**', lambda route, request: route.fulfill(body='{"mock": "data"}'))

 

7. Xử lý nhiều Context và Windows

 

Kiểm tra các ứng dụng yêu cầu nhiều ngữ cảnh trình duyệt hoặc cửa sổ trong một bài kiểm tra duy nhất, mô phỏng các kịch bản như ứng dụng trò chuyện.

context1 = browser.new_context()
context2 = browser.new_context()
page1 = context1.new_page()
page2 = context2.new_page()

 

8. Ghi đè cấu hình nâng cao

 

Đối với các trường hợp kiểm tra cụ thể, ghi đè các cấu hình mặc định của Playwright để phù hợp với nhu cầu kiểm tra của bạn, chẳng hạn như thay đổi cài đặt thời gian chờ hoặc tùy chọn khởi chạy trình duyệt.

playwright = sync_playwright().start()
browser = playwright.chromium.launch(headless=False, slowMo=50)

 

9. Mô phỏng Thiết bị và Điều kiện Mạng

 

Mô phỏng các cấu hình thiết bị và điều kiện mạng khác nhau để kiểm tra khả năng đáp ứng và hiệu suất trong các điều kiện khác nhau.

page.emulate_network_conditions(offline=True)
page.goto('https://example.com', timeout=60000)  # Thời gian chờ dài hơn cho mạng chậm hơn


Bằng cách áp dụng các thủ thuật và thực tiễn tốt nhất này, bạn có thể tận dụng tối đa tiềm năng của Playwright trong các dự án Python của bạn, đạt được quy trình kiểm tra mạnh mẽ và hiệu quả hơn.

Tag list:
- playwright
- playwright tips
- playwright collect data
- crawl with playwright
- playwright crawl
- python playwright
- playwright js executable scripts
- scrape with playwright
- playwright tricks
- playwright scrape
- playwright scripts

Liên quan

Python Scrapers

Đọc thêm
Python Scrapers

Đọc thêm
Python Scrapers

Đọc thêm

Theo dõi

Theo dõi bản tin của chúng tôi và không bao giờ bỏ lỡ những tin tức mới nhất.