Como prometido em alguns posts anteriores, hoje coloquei minhas mãos no selenium 2 beta1 e de fato MUITA coisa mudou. No post em que eu falava sobre o release do beta, não dei maiores detalhes pois somente fiz a divulgação da notícia e não uma verificação do que realmente afeta nossas vidas como testers e ou automatizadores.
Posso ter perdido um pouco o Hype do lançamento da fase alpha porque gostaria de ver se realmente tudo que estava sendo dito era só blablabla opensource ou de fato algo bom mesmo iria sair do papel.
Selenium 2.0 é uma atualização do framework selenium com merge de outra ferramenta de automação free chamada WebDrive. O WebDrive permite que testes web possam ser realizados sem uma interface gráfica, já que ele controla o browser e não utiliza de proxy request ou injeção de javascript (como o selenium e outras ferramentas funcionam).
Com esse Merge, será possível utilizar as funcionalidades do WebDrive em conjunto com a biblioteca selenium sem maiores problemas. Você poderá utilizar tanto o HTMLUNIT para realizar os testes em background ou utilizar algum dos drives de acordo com o navegador de sua escolha (ie, firefox e chrome). As possibilidades são infinitas e nãooooo.. eu não estou sendo pago para falar bem, o negócio é bom mesmo.
Para quem já é da velha guarda do selenium, sabe que existe alguns inputs, com mascara javascript que é um “parto” incluir conteúdo. Já com o webdrive do selenium 2 é mais intuitivo e requer menos trabalho, ou seja, nada de ficar injetando javascript a torto e a direito.
exemplos de como achar elementos utilizando webdrive (retirados do site do selenium)
<strong>WebElement </strong>element;
element = driver.findElement(By.id("pass"));
element = driver.findElement(By.name("password"));
element = driver.findElement(By.xpath("//input[@id='pass']"));
Como enviar valor para esse elemento
element.sendKeys("teste teste");
Mão na massa
Para utilizar o Selenium 2 Beta, você precisa fazer o download dos ‘.jars’ novos ( biblioteca selenium + webdrive + utils que vem no pacote), adicionar no seu classpath (já ensinei como faz isso no eclipse) e pronto, READY TO TEST.
“Pera.. não precisa subir o servidor do selenium?” Er…não =)
Ele instancia intuitivamente ;D
Chega de blablabla e vamos ver um código de exemplo :
<strong>import</strong> java.util.List;
<strong>import</strong> org.openqa.selenium.By;
<strong>import</strong> org.openqa.selenium.WebElement;
<strong>import</strong> org.openqa.selenium.htmlunit.HtmlUnitDriver;
<strong>public</strong> <strong>class</strong> GoogleTest {
<strong>public</strong> <strong>static</strong> <strong>void</strong> main(String[] args) <strong>throws</strong> Exception {
// Instância o HTMLUNIT
HtmlUnitDriver driver = <strong>new</strong> HtmlUnitDriver();
// GetURL --> Acessa endereço requisitado
driver.get("http://www.leonardobg.com.br");
// Não consegui usar o getText para uma string de maneira fácil e
// nenhum outro lugar fazia referência, parece que o
// webdrive usa somente esse tipo de abordagem, colocando o que vc
// quer validar / guardar em uma lista.
List<WebElement> SobreAutor = driver.findElements(By.<em>className</em>("themeblvd-author"));
// Loop Básico de print para o numero de elementos na linha 1:1
<strong>for</strong> (WebElement exibe : SobreAutor) {
System.<em>out</em>.println(exibe.getText());
}
}
}
HTMLUNIT pode ser lindo para desenvolvedores, mas para os céticos de plantão é algo do Capeta…rs… sendo assim, você pode usar o FirefoxDrive para feedback de interface (o que é ideal para quem esta começando).
Este exemplo é uma variação do exemplo do google “Cheese”, que já serve para alguma noção de como fazer um bom uso do selenieum 2.
Mas como existe um pessoal que não curte ficar assim digitando código, pode utilizar o selenium IDE para gerar seus script de teste JÁ adaptados para o padrão selenium 2 com um plugin do Dr. Dave Hunt (https://addons.mozilla.org/en-US/firefox/user/5166281/), mas não pense que ele já vai criar o seu teste como HTMLUNIT bonitão nãoo! Ele somente vai estruturar seu teste no formado do selenium2 + framework de teste que vai utilizar, ou seja, fazendo instância do FireFoxDrive e colocando os annotations em seus devidos lugares.
Atenção: Se você já tem seus testes no selenium 1, pense muito bem antes de fazer a migração. Nem todas as funcionalidades da API foram implantadas na nova versão do selenium, ou seja, você pode ter alguns problemas efetuando upload de arquivo, etc. (a não ser que você tenha modularizado seu código, dai não tem problema, se der “pau” é só voltar…rs)
Sei que não foi um Hands ON hardcore mas prometo que nos próximos posts vou me aprofundar um pouco mais nas funcionalidades e ports para o selenium 2.0
Até a próxima.

Cara, muito bom.
Estou aguardando a continuidade,
estava usando o Selenium 1.0, gostei do 2.0, e vou me aprofundar nele.
Falou, um abraço!
Boa abordagem, Leo!
Comecei a dar uma olhada nos alfas do Selenium 2 no meio do ano passado.
Na época, apesar das boas melhorias, só fiquei sentindo falta de um Server para executar os scripts, p.ex., fom FirefoxDriver em outro computador que não o meu próprio. Agora já saiu o Selenium Server 2.0b2 que (acho) que já deve dar pra fazer isso.
Opa, comentando pela segunda vez aqui, essa migração tem o intuito de aumentar o poder do selenium
, ela foi apresentada com maior definição no GTAC de 2009 mas só em 2011 que estamos mais próximos de um release, muitas coisas mudaram, normal.., porem a mudança é pra melhorar, não quero me estender, se você tiver o interesse entre em contato e bolamos um post, vlw
eu comecei estudar java a pouco tempo dai estava fazendo alguns exemplos de classes robot e talz, ao fazer o seu exemplo tenho o seguinte erro: package org.openqa.selenium does not exist…
Porem esta tudo configurado como vc bem explicou.
Pode me esclarer isso?
Desde ja obrigado!
Marcelo, você setou o classpath do seu projeto?
Sim Leonardo tudo setado direitinho, porém continua dando erro.
Boa Tarde,
Leonardo!
Comecei a utilizar o Selenium RC a pouco tempo, já criei vários scripts, porém agora querem que eu utilize o WebDriver, como faço para Migrar?
Acessei http://seleniumhq.org/docs/appendix_migrating_from_rc_to_webdriver.html
Mas estou com dúvidas
he first step when starting the migration is to change how you obtain your instance of Selenium. When using Selenium RC, this is done like so
Como faço?
Boa tarde, Leonardo!
Estou iniciando com testes em Selenium, porém estou precebendo que para criar instancias dos WebDrivers de Firefox, Chrome e IE, eles possuem diferentes formas de se trabalhar, ainda não consegui realizar testes com IE e Chrome, nao estou conseguindo capturar o WebDriver desses dois browsers, você teria uma exemplo com a melhor maneira para se utilizar essa API.
Agradeço a atenção.
Fernando.
Cada browser usa a instancia especifica e você so pode usar uma instancia de cada vez.
nao tem muito mistério:
WebDriver driver;
driver = new InternetExplorerDriver();