← Powrót do listy

Playwright Automatic Test Common Pocket: Te 3 błędy są najprostsze do obalenia.

itadol5j

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:

  1. Zawsze czekać, aż elementy zostaną załadowane
  2. Zawartość dynamiczna musi być widoczna.
  3. Pamiętaj, aby zamknąć przeglądarkę i kontekst

W ten sposób można uniknąć 99% powszechnych błędów.