Exemplos Práticos Playwright
Abaixo estão alguns padrões avançados para tirar o máximo proveito do Playwright no ecossistema Mbbrowser.
1. Upload de Arquivos
O Playwright facilita o upload de documentos e imagens em sites de classificados ou redes sociais.
javascript
// Selecionar um arquivo local para upload
await page.setInputFiles('input[type="file"]', 'caminho/para/imagem.jpg');2. Manipulação de Popups e Novas Janelas
Sempre que uma ação abrir uma nova aba, você pode capturá-la assim:
javascript
const [newPage] = await Promise.all([
context.waitForEvent('page'), // Aguarda a nova página (aba)
page.click('a[target="_blank"]') // Clica no link que abre em nova aba
]);
await newPage.waitForLoadState();
console.log('URL da nova aba:', newPage.url());3. Extração de Dados em Tabelas Paginadas
Exemplo de como navegar por páginas e coletar dados.
javascript
async function scrapeData(page) {
const data = [];
while (true) {
// Extrai itens da página atual
const items = await page.locator('.table-row').all();
for (const item of items) {
data.append(await item.innerText());
}
// Verifica se existe botão de "Próximo" e se está habilitado
const nextBtn = page.locator('button.next');
if (await nextBtn.isVisible() && await nextBtn.isEnabled()) {
await nextBtn.click();
await page.waitForLoadState('networkidle');
} else {
break;
}
}
return data;
}Boas Práticas para Playwright no Mbbrowser
- Reutilize o Contexto: No Mbbrowser, o
contextjá vem com as configurações de cookies do perfil. Não crie novos contextos anônimos se quiser manter o login. - Use Locators Estáveis: Evite IDs dinâmicos gerados por frameworks como React. Prefira
getByRoleou atributos de dados (ex:data-testid). - Tratamento de Timeouts: Em conexões de proxy lentas, aumente o timeout padrão do Playwright globalmente:javascript
context.setDefaultTimeout(60000); // 60 segundos - Fechamento Seguro: Sempre chame
browser.close()no final do seu script para liberar os recursos do Playwright, mesmo que você opte por deixar a janela do Mbbrowser aberta.
