Playwright Automatic Test Common Pocket: Te 3 błędy są najprostsze do obalenia.
Playwright Automatic Test Common Pocket: Te 3 błędy są najprostsze do obalenia.
Playwright jest nowoczesnym narzędziem automatyzacji przeglądarki, ale wiele osób wkracza w proces. I dzisiaj zamierzam usunąć trzy najczęstsze błędy, i zamierzam pomóc ci uniknąć dołów.
Błąd 1: Operacje bez oczekiwania na załadunek elementów
To najczęstsza dziura. Wielu ludzi pisze kody, które wyglądają w porządku, ale źle je sprawdzają:element not foundNie wiem.
Błąd:
await page.click("#submit-btn");
Problem polega na tym, że strona może nie być załadowana, a przycisk nie istnieje.
Prawidłowa praktyka:
await page.waitForSelector("#submit-btn");
await page.click("#submit-btn");
Albo w bardziej nowoczesny sposób:
await page.locator("#submit-btn").click();
Lokalizator Playwrighta automatycznie czeka na interakcję elementów, co jest główną zaletą nad Selenium.
Błąd 2: Zanik oczekiwania na dynamiczne ładowanie
Wiele stron używa JavaScript dynamicznie do renderowania treści. Twój skrypt mógł zacząć pobierać dane przed załadowaniem zawartości.
Błąd:
await page.goto("https://example.com");
const text = await page.textContent(".dynamic-content");
console.log(text); // 可能是 null 或空字符串
Prawidłowa praktyka:
await page.goto("https://example.com");
await page.waitForLoadState("networkidle");
const text = await page.textContent(".dynamic-content");
console.log(text);
Lub dla konkretnych elementów:
await page.locator(".dynamic-content").waitFor({ state: "visible" });
const text = await page.textContent(".dynamic-content");
Błąd 3: Kontekst i cykl życiowy przeglądarki nie został prawidłowo przetworzony
Wiele osób tworzy przykłady przeglądarki i zapominają je wyłączyć, powodując wyciek pamięci. Albo wyłączyć przeglądarkę w niewłaściwym czasie, powodując załamanie skryptu.
Błąd:
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto("https://example.com");
// 忘记关闭浏览器
Prawidłowa praktyka:
const browser = await chromium.launch();
try {
const page = await browser.newPage();
await page.goto("https://example.com");
// 你的操作
} finally {
await browser.close();
}
Albo w bardziej elegancki sposób:
const browser = await chromium.launch();
const context = await browser.newContext();
const page = await context.newPage();
try {
await page.goto("https://example.com");
// 你的操作
} finally {
await context.close();
await browser.close();
}
Streszczenie
Rdzeń Playwrighta jestCzekaj.orazZarządzanie cyklem życiaNie wiem. Zapamiętaj te trzy punkty:
- Zawsze czekać, aż elementy zostaną załadowane
- Zawartość dynamiczna musi być widoczna.
- Pamiętaj, aby zamknąć przeglądarkę i kontekst
W ten sposób można uniknąć 99% powszechnych błędów.