Você conhece o Playwright? Aprenda a automatizar qualquer coisa na Web!

Você vai conhecer o Playwright e aprender a usar ele com Python para automatizar diversas tarefas. Passo a passo, vamos da instalação até a construção dos códigos, tudo explicado de forma simples e clara!

O Playwright é uma ferramenta que automatiza tarefas na internet, como preencher formulários, clicar em botões, navegar por páginas e extrair informações de sites de forma prática e eficiente.

Para fazer o download do(s) arquivo(s) utilizados na aula, preencha com o seu e-mail:

Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.

O Playwright é uma ferramenta de automação de navegador que controla Chrome, Firefox e Safari por código. Com Python, ele automatiza tarefas na web — preencher formulários, clicar em botões, navegar entre páginas e extrair dados (web scraping). É moderno, rápido e lida bem com páginas dinâmicas que dependem de JavaScript.

O que é o Playwright e para que ele serve?

O Playwright é uma biblioteca de automação web que permite controlar navegadores como Chrome, Firefox, Safari e Microsoft Edge para executar tarefas automaticamente.

Diferente de outras ferramentas, como o Selenium, o Playwright oferece funcionalidades nativas que simplificam a automação, como esperar elementos carregarem na tela ou gerar códigos automaticamente.

Por que usar o Playwright?

  • Eficiência: Ele gerencia automaticamente ações como esperar um botão aparecer, evitando a necessidade de verificações manuais.
  • Multi-navegadores: Funciona com diversos navegadores sem a necessidade de instalações adicionais.
  • Geração de código: Possui uma ferramenta (Codegen) que cria scripts automaticamente ao interagir com sites.
  • Flexibilidade: Permite automatizar desde buscas no Google até sistemas internos de empresas, desde que rodem no navegador.

Como instalar o Playwright?

É muito simples. Para instalar, siga estes dois passos usando Python:

Instale a biblioteca:
No terminal, execute o comando:

pip install playwright

Isso vai instalar a biblioteca Playwright no seu ambiente Python.

Instale as engines dos navegadores:
Após a instalação, rode:

playwright install

Esse comando baixa as extensões necessárias para que o Playwright controle navegadores como Chrome (padrão), Firefox e outros.

Tabela: Comandos de Instalação do Playwright

ComandoDescrição
pip install playwrightInstala a biblioteca Playwright no Python.
playwright installInstala as engines dos navegadores suportados.

Como abrir um navegador com o Playwright?

O Playwright permite fazer isso de forma simples, com a opção de executá-lo em modo visual (com interface gráfica) ou headless (sem interface, mais rápido).

Exemplo de código para abrir o navegador:

Python
from playwright.sync_api import sync_playwright
import time

with sync_playwright() as pw:
    navegador = pw.chromium.launch(headless=False)  # Abre o Chrome em modo visual
    pagina = navegador.new_page()  # Cria uma nova página
    time.sleep(4)  # Aguarda 4 segundos para visualização (opcional)
    navegador.close()  # Fecha o navegador

Dica: O parâmetro headless=False faz o navegador aparecer na tela, ideal para testes. Para automações em produção, use headless=True para maior desempenho.

Como navegar para uma página específica?

Para navegar até um site, usamos o método .goto(). É essencial incluir o protocolo https:// no URL para garantir que o Playwright acesse a página corretamente.

Exemplo de navegação:

Python
pagina.goto("https://www.hashtagtreinamentos.com")

O que acontece?

  • O Playwright carrega a página e espera automaticamente que ela esteja pronta antes de executar o próximo comando.
  • Você pode usar .go_back() para voltar à página anterior ou .go_forward() para avançar.

Como extrair informações de uma página?

O Playwright permite extrair dados, como o título de uma página, com comandos simples. Por exemplo, para obter o título:

Python
titulo = pagina.title()
print(titulo)

Isso retorna o texto que aparece na aba do navegador, como “Hashtag Treinamentos - Cursos Excel, VBA, Python”.

Por que isso é útil?

  • Extrair títulos, textos ou outros dados é essencial para validar se a automação está na página correta ou para coletar informações específicas.

A técnica de extrair dados de sites automaticamente é chamada web scraping. Se quiser aprender mais sobre isso, temos um post que ensina a extrair grande volumes de dados de sites..

Como localizar e interagir com elementos na página?

Localizar elementos nas páginas, como botões ou campos de formulário, é uma tarefa central na automação web. O Playwright oferece métodos como .locator() e .get_by_role() para isso.

Por que evitar XPath?

  • XPath é frágil, pois depende da estrutura exata do HTML, que pode mudar com atualizações no site.
  • O Playwright recomenda usar métodos como .get_by_role() ou .get_by_text(), que são mais robustos.

Exemplo: Clicando em um botão:

Python
botao = pagina.get_by_role("link", name="Quero aprender")
botao.click()

Como o Playwright ajuda?

  • Ele espera automaticamente que o elemento esteja visível e clicável antes de executar a ação.
  • Use o Codegen para gerar esses comandos automaticamente: playwright codegen https://www.hashtagtreinamentos.com Isso abre o site e uma janela que gera o código enquanto você interage com a página.

Como preencher formulários automaticamente?

Preencher formulários é uma das automações mais comuns. O método .fill() permite inserir texto em campos de texto.

Exemplo: Preenchendo um formulário:

Python
pagina.goto("https://www.hashtagtreinamentos.com/curso-python")
pagina.get_by_role("textbox", name="Seu primeiro nome").fill("João")
pagina.get_by_role("textbox", name="Seu e-mail").fill("python@teste.com")
pagina.get_by_role("button", name="Acessar informações").click()

O que o Playwright faz automaticamente?

  • Garante que o campo esteja visível e pronto para receber texto.
  • Executa cliques e preenchimentos sem a necessidade de comandos manuais adicionais.
Ícone PythonPython Impressionador

Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.

Começar agoraSeta para a direita
Fundo PythonTelas Python
Luz Python

Como gerenciar múltiplas abas?

Quando uma ação, como clicar em um botão, abre uma nova aba, o Playwright usa contextos para gerenciá-las. Um contexto permite controlar várias páginas simultaneamente.

Exemplo: Gerenciando uma nova aba:

Python
contexto = navegador.new_context()
pagina = contexto.new_page()
pagina.goto("https://www.hashtagtreinamentos.com")
botao = pagina.get_by_role("link", name="Quero aprender")
with contexto.expect_page() as nova_pagina_info:
    botao.click()
pagina2 = nova_pagina_info.value
pagina2.goto("https://www.hashtagtreinamentos.com/curso-python")

Por que usar contextos?

  • Permitem gerenciar múltiplas abas sem precisar alternar manualmente entre elas.
  • Cada página pode ser controlada independentemente, ao contrário do Selenium, que exige selecionar a aba ativa.

Como esperar elementos carregarem?

O Playwright espera automaticamente que elementos estejam visíveis antes de interagir com eles. Porém, você pode usar o método expect() para esperar explicitamente por uma condição.

Exemplo: Esperando um botão aparecer:

Python
from playwright.sync_api import expect

botao = pagina2.get_by_role("link", name="Quero garantir uma vaga")
expect(botao).to_be_visible()
botao.click()

Quando usar expect()?

  • Útil quando você precisa garantir que um elemento específico esteja visível ou habilitado antes de prosseguir.
  • Evita erros em páginas que demoram a carregar.

Como selecionar múltiplos elementos?

Para interagir com vários elementos, como todos os links de uma página, use o método .all().

Exemplo: Listando todos os links:

Python
links = pagina.get_by_role("link").all()
for link in links:
    print(link.text_content())

Quando isso é útil?

  • Ideal para coletar dados de listas, como todos os botões ou links em um menu.

Dicas para usar o Playwright de forma eficiente

  • Use o Codegen: Ele simplifica a criação de scripts ao gerar códigos automaticamente enquanto você interage com o site.
  • Evite esperas manuais: O Playwright gerencia tempos de espera automaticamente, então evite usar time.sleep() em produções.
  • Teste em modo visual: Durante o desenvolvimento, use headless=False para visualizar o que está acontecendo.
  • Consulte a documentação: Acesse a documentação oficial do Playwright para exemplos detalhados.

Tabela: Comparação entre Playwright e Selenium

FuncionalidadePlaywrightSelenium
Suporte a navegadoresChrome, Firefox, Safari, EdgeChrome, Firefox, Safari, Edge
Espera automáticaSim, nativaRequer configurações manuais
Geração de códigoCodegen integradoNão possui
Gerenciamento de abasContextos simplificadosSeleção manual de abas

Perguntas frequentes sobre o Playwright

1. O que é o Playwright?

É uma biblioteca de automação de navegadores criada pela Microsoft. Ela controla Chrome, Firefox e WebKit (Safari) por código, permitindo automatizar testes e tarefas na web, como navegação, preenchimento de formulários e extração de dados.

2. Como instalar o Playwright com Python?

Rode pip install playwright e, em seguida, playwright install para baixar os navegadores. Depois é só importar a biblioteca no seu script e começar a automatizar.

3. Playwright ou Selenium: qual usar?

O Selenium é mais antigo e consolidado; o Playwright é mais moderno, rápido e lida melhor com páginas dinâmicas e esperas automáticas. Para novos projetos, o Playwright costuma exigir menos código e dar menos problemas de sincronização.

4. O Playwright serve para web scraping?

Sim. Por controlar um navegador real, ele consegue extrair dados até de sites que carregam conteúdo via JavaScript — algo que bibliotecas só de requisição (como requests) não fazem sozinhas. É uma ótima opção para scraping de páginas dinâmicas.

Conclusão

O Playwright é uma ferramenta inovadora e eficiente para automação web, ideal para iniciantes e profissionais. Com ele, você consegue automatizar tarefas como preenchimento de formulários, navegação em sites e extração de dados de forma simples e rápida.

Comece experimentando em sites simples, para preencher formulários ou fazer buscas automáticas, e explore o Codegen para acelerar o desenvolvimento.

Tem muito mais que você pode fazer com Python, veja diversas possibilidades no nosso blog.

Próximos passos:

  • Teste a automação em um site que você usa no trabalho ou em casa.
  • Consulte a documentação para aprender mais sobre métodos avançados.
  • Combine o Playwright com outras bibliotecas Python, como Pandas, para processar dados extraídos

E caso prefira esse conteúdo no formato de vídeo, assista aqui embaixo ou acesse o nosso canal do YouTube!

O que você aprende neste vídeo

Resposta rápida: A aula percorre o Playwright com Python do zero: instalação, navegador visível com headless=False, navegação, localizadores (com o XPath como a forma não recomendada), várias abas por contexto, formulário e esperas. O gerador de código playwright codegen aparece como o atalho para descobrir o localizador de cada elemento.

Neste vídeo (39 min):

  • 1:30 - A vantagem central do Playwright é verificar sozinho se um botão existe e está pronto para ser clicado antes de agir, sem você precisar checar isso na mão.
  • 2:35 - A instalação é em dois comandos: pip install playwright traz a biblioteca, e playwright install baixa os navegadores que ele usa por baixo dos panos.
  • 7:04 - Por padrão o navegador roda escondido (headless); para ver a janela abrindo, é só passar headless=False na hora de abrir.
  • 8:22 - Cada aba vira uma variável de página independente (página um, página dois...), e dá para mandar ação para qualquer uma delas direto, sem ficar selecionando a aba ativa toda hora como no Selenium.
  • 8:51 - Para navegar, usa o método goto() da página, e o endereço tem de vir com https na frente; o www é opcional.
  • 12:58 - Uma forma de localizar um elemento é pelo XPath, o caminho dele na página, que o próprio Playwright não recomenda: basta o site mudar o botão de lugar para ele parar de funcionar.
  • 16:56 - O comando playwright codegen seguido do site abre duas janelas, o site ao vivo e o código sendo gerado; o botão pick locator deixa clicar só no elemento que interessa, sem gerar o script inteiro da sessão.
  • 24:56 - Para controlar mais de uma aba ao mesmo tempo, primeiro é preciso criar um contexto a partir do navegador, e é dele que as páginas novas nascem.
  • 27:19 - Para pegar a aba nova que abre depois de um clique, o recomendado é um bloco with que espera essa página aparecer, em vez de assumir que a variável já vem pronta.
  • 30:53 - .fill() (o verbo preencher, em inglês) já escreve no campo direto, sem precisar clicar nele antes.
  • 36:04 - Dá para pedir uma espera explícita também: expect consegue esperar ativamente até um elemento ficar visível antes de interagir com ele.
  • 38:21 - A recomendação final é usar time.sleep() só enquanto estiver testando, para acompanhar com calma o que está acontecendo, e tirar essa pausa quando a automação estiver pronta.

Trechos do vídeo:

  • Antes de um clique, o Playwright confere sozinho se o elemento está visível, estável, habilitado e pronto para receber o evento, sem você pedir nada disso.
  • Um localizador pode virar o ponto de partida de outro: filtra dentro de uma parte da página e, dentro dela, filtra de novo, até sobrar só o elemento certo.
  • Um localizador do Playwright não é uma lista: para percorrer num laço do Python todos os elementos que ele encontra, acrescenta-se .all() no final.
  • O XPath copiado do navegador pode conter aspas duplas; por isso o instrutor passa o localizador entre aspas simples no código.

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Posts mais recentes de Python

Posts mais recentes da Hashtag Treinamentos