Teste Automático Playwright Common Pocket: Este 3 erros são os mais fáceis de reverter.
Teste Automático Playwright Common Pocket: Este 3 erros são os mais fáceis de reverter.
Playwright é uma ferramenta de automação de navegador moderna, mas muitas pessoas pisam no processo. E hoje vou eliminar os três erros mais comuns, e vou ajudá-lo a evitar as covas.
Erro 1: Operações sem esperar pelo carregamento de elementos
Este é o poço mais comum. Muitas pessoas escrevem códigos que parecem bons, mas executam-nos mal.element not foundNão sei.
Erro:
await page.click("#submit-btn");
O problema é que a página pode não ser carregada e o botão não existe.
Prática correta:
await page.waitForSelector("#submit-btn");
await page.click("#submit-btn");
Ou de uma forma mais moderna:
await page.locator("#submit-btn").click();
O localizador do dramaturgo espera automaticamente que elementos interajam, o que é uma grande vantagem sobre o Selenium.
Erro 2: Negado à espera de carregamento dinâmico
Muitos sites usam o JavaScript dinamicamente para renderizar conteúdo. Seu script pode ter começado a extrair dados antes do conteúdo ser carregado.
Erro:
await page.goto("https://example.com");
const text = await page.textContent(".dynamic-content");
console.log(text); // 可能是 null 或空字符串
Prática correta:
await page.goto("https://example.com");
await page.waitForLoadState("networkidle");
const text = await page.textContent(".dynamic-content");
console.log(text);
Ou para elementos específicos:
await page.locator(".dynamic-content").waitFor({ state: "visible" });
const text = await page.textContent(".dynamic-content");
Erro 3: O contexto e o ciclo de vida da página do navegador não foram processados corretamente
Muitas pessoas criam exemplos de navegador e esquecem de desligá-los, causando vazamento de memória. Ou desligue o navegador na hora errada, causando o colapso do script.
Erro:
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto("https://example.com");
// 忘记关闭浏览器
Prática correta:
const browser = await chromium.launch();
try {
const page = await browser.newPage();
await page.goto("https://example.com");
// 你的操作
} finally {
await browser.close();
}
Ou de uma forma mais elegante:
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();
}
Resumo
O núcleo do dramaturgo éEspera.eGestão do ciclo de vidaNão sei. Lembre-se destes três pontos:
- Sempre aguarde até que os elementos sejam carregados
- O conteúdo dinâmico precisa ser visível.
- Lembre-se de fechar o navegador e contexto
Desta forma, 99% dos erros comuns podem ser evitados.