Drivers¶
Como é que o Mink fornece uma API consistente para vários tipos de bibliotecas
de navegadores diferentes, frequentemente escritas em diferentes linguagens?
Através dos drivers! Um driver Mink é uma classe simples, que implementa
Behat\Mink\Driver\DriverInterface. Esta interface descreve metodos pontes
entre o Mink e os emuladores de navegadores reais. Ele não sabe nada sobre como
inicar/parar ou analisar uma página nesse emulador de navegador em particular. Ele
somente sabe que método do driver que deve chamar para fazer isso.
O Mink vem com seis drivers fora da caixa:
Suporte a recursos do driver¶
Apesar do Mink fazer o seu melhor em remover as diferenças entre navegador e
diferentes emuladores de navegador, ele não pode fazer muito em alguns casos.
Por exemplo, BrowserKitDriver não avalia JavaScript e Slenium2Driver não consegue
pegar código dos status das respostas. Nestes casos, o driver sempre irá lançar
uma exceção Behat\Mink\Exception\UnsupportedDriverActionException.
| Funcionalidade | BrowserKit/Goutte | Selenium2 | Zombie | Selenium | Sahi |
|---|---|---|---|---|---|
| Atravessar páginas | Sim | Sim | Sim | Sim | Sim |
| Manipular Formulários | Sim | Sim | Sim | Sim | Sim |
| Autenticação Básica HTTP | Sim | Não | Sim | Não | Não |
| Gestão de janelas | Não | Sim | Não | Sim | Sim |
| Gestão de iFrames | Não | Sim | Não | Sim | Não |
| Acessar cabeçalhos de solicitação | Sim | Não | Sim | Não | Não |
| Cabeçalhos de resposta | Sim | Não | Sim | Não | Não |
| Manipular Cookies | Sim | Sim | Sim | Sim | Sim |
| Acessar códgigo de status | Sim | Não | Sim | Não | Não |
| Manipular mouse | Não | Sim | Sim | Sim | Sim |
| Arrastar e largar | Não | Sim | Não | Sim | Sim |
| Ações de teclado | Não | Sim | Sim | Sim | Sim |
| Visualizar elementos | Não | Sim | Não | Sim | Sim |
| Avaliar JS | Não | Sim | Sim | Sim | Sim |
| Redimensionar janela | Não | Sim | Não | Não | Não |
| Maximizar janela | Não | Sim | Não | Sim | Não |