← Tilbage til listen

Playwright automatisk test fælles lomme: Denne 3 fejl er de nemmeste at vælte.

itadol5j

Playwright automatisk test fælles lomme: Denne 3 fejl er de nemmeste at vælte.

Playwright er en moderne browser automatisering værktøj, men en masse mennesker træder i processen. Og i dag vil jeg fjerne de tre mest almindelige fejl, og jeg vil hjælpe dig med at undgå hullerne.

Fejl 1: Operationer uden at vente på indlæsning af element

Det er det mest almindelige hul. Mange mennesker skriver koder, der ser okay ud, men kør dem forkert:element not foundDet ved jeg ikke.

Fejl:

await page.click("#submit-btn");

Problemet er, at siden ikke kan indlæses og knappen ikke findes.

Korrekt praksis:

await page.waitForSelector("#submit-btn");
await page.click("#submit-btn");

Eller på en mere moderne måde:

await page.locator("#submit-btn").click();

Playwrights locator venter automatisk på elementer til at interagere, hvilket er en stor fordel i forhold til Selenium.

Fejl 2: Forsøget venter på dynamisk indlæsning

Mange hjemmesider bruger JavaScript dynamisk til at gøre indhold. Dit script kan være begyndt at udtrække data, før indholdet blev indlæst.

Fejl:

await page.goto("https://example.com");
const text = await page.textContent(".dynamic-content");
console.log(text); // 可能是 null 或空字符串

Korrekt praksis:

await page.goto("https://example.com");
await page.waitForLoadState("networkidle");
const text = await page.textContent(".dynamic-content");
console.log(text);

eller for specifikke elementer:

await page.locator(".dynamic-content").waitFor({ state: "visible" });
const text = await page.textContent(".dynamic-content");

Fejl 3: Browsers kontekst og sidelivscyklus blev ikke behandlet korrekt

Mange mennesker skaber browser eksempler og glemmer at slukke dem, forårsager hukommelse lækage. Eller lukke browseren ned på det forkerte tidspunkt, hvilket får scriptet til at kollapse.

Fejl:

const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto("https://example.com");
// 忘记关闭浏览器

Korrekt praksis:

const browser = await chromium.launch();
try {
  const page = await browser.newPage();
  await page.goto("https://example.com");
  // 你的操作
} finally {
  await browser.close();
}

Eller på en mere elegant måde:

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();
}

Oversigt

Playwrights kerne erVent.ogLivscyklusstyringDet ved jeg ikke. Husk disse tre punkter:

  1. Vent altid indtil elementer er indlæst
  2. Dynamisk indhold skal være synligt.
  3. Husk at lukke browseren og sammenhængen

På denne måde kan 99% af de almindelige fejl undgås.