Robô de navegação em Java

4 respostas
D

Boa tarde, eu estou construindo uma interface para manutenção de cubos olap, que foram implementados com jPivot+mondrian, logo ele já gera uma interface, porém quero adicionar Drag’n drop com Ext, e mudar um pouco a organização.

E estou precisando utilizar um robô para simular o que é feito na interface gerada em Ext (que já está pronta) na interface do Mondrian.
Basicamente quero aproveitar a logica dos requests que já tem na página gerada.

4 Respostas

R

puxa, pelo jeito vc precisa um curso inteiro para fazer isto. de fato não sei sobre o assunto. conseguiu resolver?

e isto é java básico?

jaboot

djeffersonx:
E estou precisando utilizar um robô para simular o que é feito na interface gerada em Ext (que já está pronta) na interface do Mondrian.
Basicamente quero aproveitar a logica dos requests que já tem na página gerada.

Se for uma interface WEB (html), você consegue fazer facilmente com o Selenium.

D

É uma interface web sim e em html, pensei no Selenium tb pq ele faz exatamente oq eu quero, mas eu tenho como construir uma navegação via código Java com o selenium ?

jaboot
Totalmente. Vou te passar um exemplo:
package br.com.teste;

import java.io.FileNotFoundException;
import java.io.IOException;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;

import com.google.common.base.Function;

public class MeuProjetoTestDrive {

	private static final String URL = "http://localhost:8080/meuprojeto";
	private final String LOGIN = "meuLogin";
	private final String SENHA = "minhasenha";

	private final static WebDriver DRIVER = new InternetExplorerDriver();
	
		public static void main(String[] args) {
			MeuProjetoTestDrive p = new MeuProjetoTestDrive();
			p.login();
		}
		
	private void login(String inputLogin, String inputPassword) {

		// vai até a URL que você deseja
		DRIVER.navigate().to(URL);

		// esse presenceOfElementLocated espera carregar o elemento da
		// tela. Isso faz com que não dê pau de não achar o botão
		// que quero clicar na tela
		WAIT.until(presenceOfElementLocated(By.id("btnSubmit")));

		// cria um WebElement baseado no input que você tem na tela
		// OBS: se fosse um combo, seria um Select ao invés de WebElement
		WebElement login = DRIVER.findElement(By.id("login"));
		login.sendKeys(LOGIN); // digita

		// você pode procurar (By) por id, nome, xpath...
		// depois você se vira. Dá pra fazer bastante coisa
		WebElement password = DRIVER.findElement(By.name("txtSenha"));
		password.sendKeys(SENHA); // digita

		// procura pelo link e clica nele
		WebElement link = DRIVER.findElement(By.id("btnSubmit"));
		link.click();
	}
	
	private static Function<WebDriver, WebElement> presenceOfElementLocated(final By locator) {
		return new Function<WebDriver, WebElement>() {
			@Override
			public WebElement apply(WebDriver driver) {
				return driver.findElement(locator);
			}
		};
	}

}
Você pode baixar ele pelo maven:
<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-java</artifactId>
			<version>2.6.0</version>
		</dependency>
Criado 1 de dezembro de 2011
Ultima resposta 2 de dez. de 2011
Respostas 4
Participantes 3