A pouco tempo consegui um brecha com ajuda da minha colega Arlene para implantarmos no projeto que estou trabalhando teste automatizados. Com a carta de alforria em mãos partimos para pesquisar no mercado qual seria a melhor que se encaixaria em nosso contexto de aplicação. Para que entenda, trabalhamos com desenvolvimento de portal usando a ferramenta Lumis (eu trabalho na Lumis!!!). Portais são aplicações bastante difíceis de serem testadas de forma automática; devido a questão do conteúdo dinâmico e pouco previsível não existe muita margem para que busque por padrões.
Com estas limitações em mãos, acabamos nos deparando com a api WebDriver . A um tempo atrás eu já tinha mexido um pouco com o selenium e adorei. Com isso, tentei achar algo que se assemelhasse a ele mas que me facilitasse a vida em relação a portais ( não tem muito como usar ids dos elementos no html, url não fixas, etc) . O webdriver, ao contrário do selenium, não é um javascript que executa dentro de uma página simulando a navegação… o webdriver é realmente um “envelope” em cima do seu navegador. No caso do Firefox ele é uma extensão, no caso do Internet Explorer (blargh) ele usa as chamadas de control que ele proporciona, e por ai vai. Com isso, os teste ficam mais próximos da realidade de uso do usuário, e a api para escrever os cenários mais simples. Veja o trecho:
1 2 3 4 | WebDriver driver = new FirefoxDriver(); driver.get("http://localhost:8080/"); HomePage homePage = new HomePage(webDriver); String valor = homePage.searchFirstItemforMoreRead(); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; public class HomePage extends Page { private static final String PAGE_TITLE = "teste"; public HomePage(WebDriver driver){ super(driver,PAGE_TITLE); } public AdminPage navegateToAdministration(){ webDriver.navigate().to(this.composeUrl("admin")); return new AdminPage(webDriver); } public String searchOneTextOfDestaque3(){ return this.webDriver.findElement(By.xpath("//div[@class='destaques3']/h5/a")).getText(); } public String searchFirstItemforMoreRead(){ return this.webDriver.findElement(By.xpath("//div[@class='aba_conteudo ativo']/ol[@class='mais_lidas']/li[@class='item1']/a/span")).getText(); } public List searchDestaque3Texts(){ return this.webDriver.findElements(By.xpath("//div[@class='destaques3']/h5/a")); } } |
Pelo exemplo acima fica fácil de ver o quão fácil é criar um teste em webdriver. Recomendo experimentar
http://blogblogs.com.br/
É isso aí André!! Sensacional o seu post. Trabalhar com webdriver é bem mais prático de que com o selenium rc.
Obrigado por compartilhar sua experiência!
[]‘s
Estou vendo esse web driver agora, parece bem mais simples… queria se sua experiência teve que fazer um upolading de arquivo no IE 7,8??
Confesso que nunca fiz um teste escrito com o webdriver e selenium para fazer um upload de arquivo. Porém não creio que seja algo do outro mundo, embora envolva chamada de so para escolher o arquivo.
Posso tentar ver aqui como fazer e assim que conseguir algo post aqui no blog.