← Tilbake til listen

Playwright Automatic Test Common Pocket: Disse 3 feilene er enklest å snu.

itadol5j

Playwright Automatic Test Common Pocket: Disse 3 feilene er enklest å snu.

Playwright er et moderne nettleser automatiseringsverktøy, men mange mennesker går i prosessen. Og i dag skal jeg ta ut de tre vanligste feilene, og jeg vil hjelpe deg å unngå gropene.

Feil 1: Operasjoner uten å vente på element lasting

Dette er den vanligste piten. Mange skriver koder som ser bra ut, men kjører dem feil:element not foundJeg vet ikke.

Feil:

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

Problemet er at siden ikke kan lastes og knappen ikke eksisterer.

Rett praksis:

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

Eller på en mer moderne måte:

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

Playwrights locator venter automatisk på at elementer skal samhandle, noe som er en stor fordel over Selenium.

Feil 2: Neiglet venter på dynamisk lasting

Mange nettsteder bruker JavaScript dynamisk for å gjøre innhold. Skriptet ditt kan ha begynt å trekke ut data før innholdet ble lastet.

Feil:

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

Rett praksis:

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

Eller for bestemte elementer:

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

Feil 3: Kontekst og side livssyklusen til nettleseren ble ikke behandlet riktig

Mange mennesker lager nettlesereksempler og glemmer å slå dem av, forårsake minnelekkasje. Eller slå av nettleseren på feil tidspunkt, noe som forårsaker at manuset kollapser.

Feil:

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

Rett praksis:

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

Eller på mer elegant måte:

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

Sammendrag

Playwrights kjerne erVentogLivssyklusstyringJeg vet ikke. Husk disse tre poengene:

  1. Vent alltid til elementene er lastet
  2. Dynamisk innhold må være synlig.
  3. Husk å lukke nettleseren og konteksten

På denne måten kan 99% av vanlige feil unngås.