Configurando o Selenium WebDriver
O Selenium WebDriver permite que você execute seus testes em uma variedade de navegadores, cada um com uma variedade de opções de configuração. Nesta seção, veremos como configurar seu driver WebDriver no Serenity.
A maneira mais simples de configurar o driver que você deseja usar é no arquivo serenity.conf do seu projeto (que você encontrará na pasta src/test/resources).
As opções básicas de configuração vão na seção webdriver. Por exemplo, para executar seus testes com o Chrome, você define a propriedade webdriver.driver como "chrome":
webdriver {
driver = "chrome"
}
Todos os navegadores padrão do WebDriver são suportados:
| Navegador | Valor | Exemplo |
|---|---|---|
| Chrome | chrome | webdriver.driver = "chrome" |
| Firefox | firefox | webdriver.driver = "firefox" |
| Microsoft Edge | edge | webdriver.driver = "edge" |
| Internet Explorer | IE | webdriver.driver = "IE" |
| Safari | safari | webdriver.driver = "safari" |
Configurando os drivers do WebDriver
Quando você executa um teste WebDriver contra quase qualquer driver, você precisa de um arquivo binário específico do sistema operacional para atuar como intermediário entre seu teste e o navegador que você deseja manipular. Os principais drivers, e onde você pode baixá-los, estão listados abaixo:
| Navegador | Driver | Localização | Propriedade do Sistema |
|---|---|---|---|
| Chrome | chromedriver | http://chromedriver.chromium.org | webdriver.chrome.driver |
| Firefox | geckodriver | https://github.com/mozilla/geckodriver/releases | webdriver.gecko.driver |
| Microsoft Edge | msedgedriver | https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ | webdriver.edge.driver |
| Internet Explorer | IEDriverServer | https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver | webdriver.ie.driver |
Downloads automáticos de drivers
Por padrão, o Selenium baixa e instala automaticamente os binários de driver apropriados para o driver especificado.
Configurando binários de driver manualmente
Se você não pode ou não deseja baixar os binários do WebDriver automaticamente usando o WebDriverManager (por exemplo, se você está em uma rede corporativa que não tem acesso aos binários do WebDriverManager), você pode baixar os binários e configurá-los diretamente no arquivo serenity.conf.
Neste caso, você precisa ter o binário de driver correto no caminho do sistema, ou fornecer o caminho para o binário usando a propriedade do sistema mostrada na tabela acima. Por exemplo, seu arquivo serenity.conf pode conter o seguinte:
webdriver.gecko.driver=/path/to/my/geckodriver
No entanto, adicionar um caminho do sistema ao seu arquivo serenity.properties é uma prática ruim, pois significa que seus testes só funcionarão se o diretório e binário especificados existirem, e que você esteja executando os testes no sistema operacional correto. Isso obviamente faz pouco sentido se você está executando seus testes tanto localmente quanto em um ambiente de CI.
Uma abordagem mais robusta é ter seus drivers em seu código-fonte, mas ter drivers diferentes por sistema operacional. O Serenity permite que você passe propriedades específicas do driver para um driver, desde que sejam prefixadas com drivers.os. Por exemplo, a seguinte linha configurará o webdriver.chrome.driver se você estiver executando seus testes no Windows.
drivers {
windows {
webdriver.chrome.driver = src/test/resources/webdriver/windows/chromedriver.exe
}
Você pode facilmente configurar diferentes binários para diferentes sistemas operacionais assim:
drivers {
windows {
webdriver.chrome.driver = src/test/resources/webdriver/windows/chromedriver.exe
}
mac {
webdriver.chrome.driver = src/test/resources/webdriver/mac/chromedriver
}
linux {
webdriver.chrome.driver = src/test/resources/webdriver/linux/chromedriver
}
}
Esta abordagem também funciona quando você tem mais de um driver para configurar. Suponha que você precise executar testes em três ambientes, usando Firefox ou Windows. Uma abordagem conveniente é armazenar seus drivers em uma estrutura de diretórios em src/test/resources semelhante à seguinte:
src/test/resources