← Вернуться к списку

Playwright Automatic Test Common Pocket: эти 3 ошибки легче всего отменить.

itadol5j

Playwright Automatic Test Common Pocket: эти 3 ошибки легче всего отменить.

Playwright - это современный инструмент автоматизации браузера, но многие люди вступают в этот процесс. И сегодня я собираюсь устранить три наиболее распространенные ошибки, и я собираюсь помочь вам избежать ям.

Ошибка 1: Операции без ожидания загрузки элемента

Это самая распространенная яма. Многие люди пишут коды, которые выглядят хорошо, но запускают их неправильно.element not foundЯ не знаю.

Ошибка:

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

Проблема в том, что страница не может быть загружена и кнопки не существует.

Правильная практика:

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

Или более современным способом:

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

Локатор драматурга автоматически ждет взаимодействия элементов, что является основным преимуществом перед Selenium.

Ошибка 2: Забытое ожидание динамической загрузки

Многие веб-сайты динамически используют JavaScript для рендеринга контента. Возможно, ваш скрипт начал извлекать данные до загрузки содержимого.

Ошибка:

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

Правильная практика:

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

Или для конкретных элементов:

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

Ошибка 3: контекст и жизненный цикл страницы браузера были обработаны неправильно

Многие люди создают примеры браузера и забывают отключить их, вызывая утечку памяти. Или выключите браузер в неподходящее время, что приведет к краху сценария.

Ошибка:

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

Правильная практика:

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

Или более изящным способом:

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

Резюме

Ядром драматурга являетсяПодожди.иУправление жизненным цикломЯ не знаю. Запомните эти три момента:

  1. Всегда ждите, пока загрузятся элементы
  2. Динамический контент должен быть видимым.
  3. Не забудьте закрыть браузер и контекст

Таким образом, можно избежать 99% распространенных ошибок.