← Bumalik sa listahan

Pocket: Itong 3 pagkakamali ang pinakamadaling itiwarik.

itadol5j

Pocket: Itong 3 pagkakamali ang pinakamadaling itiwarik.

Ang playwright ay isang makabagong kasangkapang browser automation, ngunit maraming tao ang nagreresulta sa proseso. At ngayon ay aalisin ko ang tatlong pinakakaraniwang pagkakamali, at tutulungan kitang iwasan ang mga hukay.

Error 1: Mga operasyon na hindi hinihintay ang pagkarga ng elemento

Ito ang pinakakaraniwang hukay. Maraming tao ang sumusulat ng mga kodigo na mukhang ayos naman, subalit mali ang pagpapatakbo nito:element not foundHindi ko alam.

Pagkakamali:

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

Ang problema ay na ang pahina ay maaaring walang karga at ang buton ay hindi umiiral.

Tamang gawain:

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

O sa mas modernong paraan:

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

Kusang hinihintay ng locator ng Playwright ang interaksiyon ng mga elemento, na isang pangunahing bentaha sa ibabaw ng Selenium.

Error 2: Napabayaang maghintay ng dinamikong pagkakarga

Maraming website ang gumagamit ng JavaScript dynamicly upang isalin ang nilalaman. Ang inyong iskrip ay maaaring nagsimula nang kumuha ng impormasyon bago pa nalagyan ng laman.

Pagkakamali:

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

Tamang gawain:

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

O para sa espesipikong mga elemento:

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

Error 3: Ang konteksto at ang siklo ng buhay ng browser ay hindi naproseso nang wasto

Maraming tao ang gumagawa ng mga halimbawa ng browser at nalilimutang patayin ang mga ito, anupat nagiging sanhi ng pag - unti ng memorya. O isara ang browser sa maling panahon, na naging dahilan upang bumagsak ang iskrip.

Pagkakamali:

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

Tamang gawain:

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

O sa mas eleganteng paraan:

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

Sumaryo

Ang pinakapusod ng laro ayMaghintayatPangangasiwa sa siklo ng buhayHindi ko alam. Tandaan ang tatlong puntong ito:

  1. Laging maghintay hanggang sa maikarga ang mga elemento
  2. Kailangang makita ang nilalamang Dinamiko.
  3. Tandaan na isara ang browser at ang konteksto

Sa ganitong paraan, ang 99% ng mga karaniwang pagkakamali ay maiiwasan.