Playwright Automatic Test Common Pocket: Deze 3 fouten zijn de makkelijkste om te keren.
Playwright Automatic Test Common Pocket: Deze 3 fouten zijn de makkelijkste om te keren.
Playwright is een moderne browser automation tool, maar veel mensen stappen in het proces. En vandaag ga ik de drie meest voorkomende fouten verwijderen, en ik ga je helpen de kuilen te vermijden.
Fout 1: Operaties zonder te wachten op laden element
Dit is de meest voorkomende put. Veel mensen schrijven codes die er goed uitzien, maar ze verkeerd doen:element not foundIk weet het niet.
Fouten:
await page.click("#submit-btn");
Het probleem is dat de pagina niet geladen kan worden en de knop niet bestaat.
Correcte praktijk:
await page.waitForSelector("#submit-btn");
await page.click("#submit-btn");
Of op een modernere manier:
await page.locator("#submit-btn").click();
Playwright's locator wacht automatisch op de interactie tussen elementen, wat een groot voordeel is ten opzichte van Selenium.
Fout 2: Verwaarloosd wachten op dynamisch laden
Veel websites gebruiken JavaScript dynamisch om inhoud te renderen. Uw script kan zijn begonnen met het extraheren van gegevens voordat de inhoud werd geladen.
Fouten:
await page.goto("https://example.com");
const text = await page.textContent(".dynamic-content");
console.log(text); // 可能是 null 或空字符串
Correcte praktijk:
await page.goto("https://example.com");
await page.waitForLoadState("networkidle");
const text = await page.textContent(".dynamic-content");
console.log(text);
Of voor specifieke elementen:
await page.locator(".dynamic-content").waitFor({ state: "visible" });
const text = await page.textContent(".dynamic-content");
Fout 3: De context- en paginalevenscyclus van de browser is niet correct verwerkt
Veel mensen maken browser voorbeelden en vergeten om ze uit te schakelen, waardoor geheugen lekkage. Of sluit de browser op het verkeerde moment, waardoor het script instort.
Fouten:
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto("https://example.com");
// 忘记关闭浏览器
Correcte praktijk:
const browser = await chromium.launch();
try {
const page = await browser.newPage();
await page.goto("https://example.com");
// 你的操作
} finally {
await browser.close();
}
Of op een meer elegante manier:
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();
}
Samenvatting
De kern van Playwright isWacht.enLevenscyclusbeheerIk weet het niet. Denk aan deze drie punten:
- Altijd wachten tot de elementen geladen zijn
- Dynamische inhoud moet zichtbaar zijn.
- Vergeet niet om de browser en context te sluiten
Op deze manier kan 99% van de gemeenschappelijke fouten worden vermeden.