Teclado
Controle a entrada de teclado através de tab.keyboard: digite em campos, pressione teclas especiais como Enter e Tab, e execute atalhos como Ctrl+A. Use quando um formulário precisa de navegação por teclado ou uma aplicação web responde a combinações de teclas que um clique não consegue acionar.
import time
from pydoll.sync import Chrome, Key
def main():
with Chrome() as browser:
tab = browser.start()
tab.go_to('https://www.wikipedia.org')
search = tab.find(id='searchInput')
search.type_text('web scraping', humanize=True)
tab.keyboard.press(Key.ENTER)
time.sleep(2)
print(tab.current_url())
main()
import asyncio
from pydoll import Chrome, Key
async def main():
async with Chrome() as browser:
tab = await browser.start()
await tab.go_to('https://www.wikipedia.org')
search = await tab.find(id='searchInput')
await search.type_text('web scraping', humanize=True)
await tab.keyboard.press(Key.ENTER)
await asyncio.sleep(2)
print(await tab.current_url())
asyncio.run(main())
Digitar em um campo
Para digitar caractere por caractere no elemento em foco, use type_text no elemento. Passe humanize=True para um tempo variável com um ou outro erro de digitação corrigido; deixe desligado para um ritmo fixo e mais rápido.
Digite seu próprio texto abaixo e execute das duas formas. Com humanize=True o ritmo varia e um ou outro erro de digitação é corrigido, então cada execução é diferente; sem ele, cada intervalo é fixo em 50ms.
Se você só precisa que o texto apareça e não se importa com eventos por tecla, insert_text cola a string inteira de uma vez:
tab.keyboard digita onde o foco já estiver
type_text e insert_text em um elemento colocam o foco nesse elemento para você, então o texto vai parar no lugar certo. Os métodos de nível mais baixo do tab.keyboard (abaixo) não fazem isso: eles enviam as teclas para o que quer que a página tenha em foco no momento. Coloque o foco no campo primeiro (clicar nele o foca) antes de digitar através do tab.keyboard.
Pressionar uma tecla
O press() executa um pressionamento completo de tecla (baixa e sobe). Use para teclas que acionam comportamento em vez de texto: Enter para enviar, Tab para mover entre campos, Escape para dispensar.
press(key) solta a tecla logo depois de pressioná-la; passe interval=0.1 para mantê-la pressionada por um décimo de segundo, ou mais tempo para simular um pressionamento longo.
Executar um atalho de teclado
O hotkey() pressiona uma combinação e a solta na ordem certa, então você não calcula bitmasks de modificadores por conta própria. Passe o modificador primeiro.
O macOS usa Command (Meta) onde Windows e Linux usam Control, então escolha o modificador conforme a plataforma:
Aplicar um modificador a uma única tecla
press() e down() recebem um argumento modifiers do enum KeyModifier:
Os membros são KeyModifier.ALT, .CTRL, .META e .SHIFT. O hotkey() já aplica os modificadores para você, então recorra a modifiers apenas quando você pressiona ou segura uma única tecla manualmente.
Segurar e soltar teclas
Para sequências em que um modificador permanece pressionado ao longo de vários toques, controle down() e up() você mesmo. Solte em um bloco finally para que um erro no meio da sequência não deixe uma tecla travada.
Atalhos da UI do navegador não funcionam
Teclas enviadas pelo DevTools Protocol são marcadas como não confiáveis, então nunca acionam a própria UI do Chrome. Atalhos que abrem abas, o DevTools ou a barra de endereços ficam inertes. Atalhos em nível de página dentro do documento funcionam normalmente.
Use comandos do navegador, não atalhos da UI
Ctrl+T, Ctrl+W, F12 e Ctrl+L não farão nada. Controle o navegador pela API dele: await browser.new_tab(), await tab.close(), await tab.go_to(url), await tab.refresh(). Atalhos que agem no conteúdo da página (Ctrl+A, Ctrl+C, Tab, Enter, teclas de seta) funcionam como esperado.
Referência de teclas
O Key (from pydoll.constants import Key) cobre o teclado inteiro:
| Categoria | Membros |
|---|---|
| Letras | Key.A até Key.Z |
| Números | Key.DIGIT0 a Key.DIGIT9, Key.NUMPAD0 a Key.NUMPAD9 |
| Função | Key.F1 até Key.F12 |
| Navegação | ARROWUP, ARROWDOWN, ARROWLEFT, ARROWRIGHT, HOME, END, PAGEUP, PAGEDOWN |
| Modificadores | CONTROL, SHIFT, ALT, META |
| Edição | ENTER, TAB, SPACE, BACKSPACE, DELETE, ESCAPE, INSERT |
Próximos passos
- Mouse: cliques, movimento e arrasto com tempo humanizado.
- Encontrar elementos: localize os campos em que você digita.
- Interações humanizadas: o que
humanize=Truefaz internamente.