Playwright Automatic Test Common Pocket: эти 3 ошибки легче всего отменить.
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();
}
Резюме
Ядром драматурга являетсяПодожди.иУправление жизненным цикломЯ не знаю. Запомните эти три момента:
- Всегда ждите, пока загрузятся элементы
- Динамический контент должен быть видимым.
- Не забудьте закрыть браузер и контекст
Таким образом, можно избежать 99% распространенных ошибок.