Arquivo

Posts Tagged ‘Exemplo’

Usando Selenium WebDriver com Java – exemplo simples

Sempre preciso criar códigos para utilizarem o Selenium Webdriver com a finalidade de simular alguma ação e efetuar testes, então resolvi criar um exemplo para reutilizar e expandir sempre que necessário.

Para quem não conhece, de forma muito simplificada, podemos dizer que o Selenium é um utilitário que nos permite gravar/criar cenários de testes e os rodar, contando com poderosas estruturas tais como checagens de resultados (asserts), loops, cargas, etc.

O Selenium WebDriver basicamente permite que criemos estes cenários de testes, e os rodemos de uma aplicação. Ele suporta Java, Ruby, Python, etc.

Como falei, a descrição acima é muito simplista, pois meu foco aqui é demonstrar com as mãos na massa como criar um projeto Java e rodar um teste que vai simular a abertura da pagina do google e uma pesquisa. Vamos lá:

  1. Crie um projeto Maven Java
  2. Adicione as dependências do Selenium (seu Pom.xml deve ficar parecido com o codigo abaixo)
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.ibm.webdriver</groupId>
    <artifactId>wdrivertest</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>wdrivertest</name>
    <dependencies>
    <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-firefox-driver</artifactId>
    <version>3.6.0</version>
    </dependency>
    </dependencies>
    </project>
    
  3. Crie uma classe com o seguinte conteúdo:
    package wdrivertest;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;
    
    /**
    * This class show how to use selenium web driver
    * https://github.com/julianommartins/seleniumWebDriver
    * @author julianom
    *
    */
    public class WebDriverExample {
    public static void main(String[] args) {
    // If you want to load a existing profile
    // Option 1
    // ProfilesIni profile = new ProfilesIni();
    // FirefoxProfile julianoProf = profile.getProfile("default");
    // FirefoxOptions options = new FirefoxOptions().setProfile(julianoProf);
    //
    // Option 2
    // DesiredCapabilities capabilities = DesiredCapabilities.firefox();
    // capabilities.setCapability("marionette", true);
    // capabilities.setCapability(FirefoxDriver.PROFILE, julianoProf);
    
    // you need to download geckodriver (https://github.com/mozilla/geckodriver/releases)
    // and extract to your machine (this example is for Linux, if you
    // are using windows, change to your local folder and add the .exe extension
    System.setProperty("webdriver.gecko.driver", "/opt/geckodriver/geckodriver");
    // option 1 to use existing profile
    //WebDriver driver = new FirefoxDriver(options);
    // option 2 to use existing profile
    //WebDriver driver = new FirefoxDriver(capabilities);
    
    WebDriver driver = new FirefoxDriver();
    
    // Opening Google
    driver.get("http://www.google.com");
    
    // q its the search box name/ID
    WebElement element = driver.findElement(By.name("q"));
    
    // Seaching for Juliano Marcos Martins - me
    element.sendKeys("Juliano Marcos Martins");
    
    // Submit the form
    element.submit();
    
    // Printing the page title - just for example
    System.out.println("Page title is: " + driver.getTitle());
    
    // If you want to Close the browser, uncomment this line
    // driver.quit();
    }
    }
    
  4. Você vai precisar baixar o Geckodriver na sua máquina e colocar em um diretório qualquer. Veja que no código Java apontamos para esse diretório.
  5. Rode sua classe: você vai ver que uma instancia do Navegador será aberta e a busca efetuada.

O projeto maven pode ser baixado de https://github.com/julianommartins/seleniumWebDriver

Enjoy!

 

Anúncios

Pequeno exemplo de Threads em Java

Compartilhando uma pequena solução utilizada em POCs (provas de conceito) quando preciso demonstrar alguma coisa utilizando Threads, segue um pequeno trecho que pode ser útil para alguém, e certamente para mim mesmo (quem escreve e compartilha – nunca esquece… ou quase isso).

Criei uma classe para ser minha gerenciadora de thread:

package br.com.ibm.threads;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

public class ThreadExecutorMaganer {
private ExecutorService executor;
private long timeout;

private List<Callable<String>> callables;

public ThreadExecutorMaganer(int maxThreads, long timeoutInSeconds) {
this.executor = Executors.newFixedThreadPool(maxThreads);
this.callables = new ArrayList<Callable<String>>();
this.timeout = timeoutInSeconds;
}

public void add(Callable<String> callable) {
this.callables.add(callable);
}

public List<Future<String>> start() {
List<Future<String>> futures = null;

try {
futures = executor.invokeAll(callables, timeout, TimeUnit.SECONDS);

executor.shutdown();
} catch (InterruptedException e) {
e.printStackTrace();

executor.shutdownNow();
}

return futures;
}

}

Esta é minha Thread em si (veja que tem um IF la com um sleep só pra provocar erro e testar), ela é do tipo Callable;

package br.com.ibm.threads;

import java.util.concurrent.Callable;

public class CallableTask implements Callable<String>{

private final String tarefa;

public CallableTask(String tarefa) {
this.tarefa = tarefa;
}

@Override
public String call() throws Exception {
System.out.println("Inside call-->" + tarefa);
if (tarefa.equals("C")){
System.out.println("Sleeping 6 seconds");
Thread.sleep(6000);
}
return tarefa;
}

}

E esta é minha classe principal que invoca o circo:

package br.com.ibm.threads;

import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

import com.ibm.services.tools.wexws.utils.ThreadExecutorMaganer;

public class CallThreadExecutorMaganer {

public static void main(String[] args) {
String[] restfulUrls = "A,B,C,D,E".split(",");
ThreadExecutorMaganer tem = new ThreadExecutorMaganer(100, 5);

for (String url : restfulUrls) {
tem.add(new CallableTask(url));
}
List<Future<String>> futureResponses = tem.start();

for (Future<String> futureResponse : futureResponses) {
try {
String resp = futureResponse.get();
System.out.println(resp);

}catch (ExecutionException ex){
System.out.println("ExecutionException while getting WEX response="+ex.getCause().getMessage());
}catch (Exception e) {
System.out.println("Fail to query WEX server:"+e.getMessage());
}
}

}

}

Antes que a patrulha critique: É um SIMPLES exemplo, não deve ser utilizado profissionalmente sem uma análise e adequação para seu caso, como tipagens adequadas, tratamento de erros, etc…

Enjoy!

Categorias:JAVA Tags:, , , ,

Reading XML with Java – Quick and simple example

I always need some code to read XML with Java. This is a place holder to me, but, maybe can be useful to other people.

Here is my XML example:

<operator logic="and">
<operator logic="or">
<term field="query" input-type="user" processing="strict" str="は" />
<term field="query" input-type="user" phrase="phrase" processing="strict" str="銀行業務" weight="1" />
<term field="query" input-type="user" processing="strict" str="持つ" />
<term field="query" input-type="user" phrase="phrase" processing="strict" str="java開発者" weight="1.69" />
<term field="query" input-type="user" processing="strict" str="探して" />
</operator>
</operator>

Here is my Java code:

import org.w3c.dom.*;
import org.xml.sax.InputSource;

import javax.xml.parsers.*;
import java.io.*;

public class ParseXML {

	public static void main(String[] args) {
		String xml = "<operator logic=\"or\"><term field=\"query\" input-type=\"user\" processing=\"strict\" str=\"は\" /><term field=\"query\" input-type=\"user\" phrase=\"phrase\" processing=\"strict\" str=\"銀行業務\" weight=\"1\" /><term field=\"query\" input-type=\"user\" processing=\"strict\" str=\"持つ\" /><term field=\"query\" input-type=\"user\" phrase=\"phrase\" processing=\"strict\" str=\"java開発者\" weight=\"1.69\" /><term field=\"query\" input-type=\"user\" processing=\"strict\" str=\"探して\" /></operator>";
		try {	
			Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(xml)));
			doc.getDocumentElement().normalize();
			
			System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
			NodeList nList = doc.getElementsByTagName("term");
			System.out.println("----------------------------");
			for (int temp = 0; temp < nList.getLength(); temp++) {
				Node nNode = nList.item(temp);
				System.out.println("\nCurrent Element :" + nNode.getNodeName());
				if (nNode.getNodeType() == Node.ELEMENT_NODE) {
					Element eElement = (Element) nNode;
					System.out.println("processing : " + eElement.getAttribute("processing"));
					System.out.println("str : " + eElement.getAttribute("str"));
	            }
	         }
	      } catch (Exception e) {
	         e.printStackTrace();
	      }
	}
}
Categorias:JAVA Tags:, , , , , , ,

Shell Script: Checar o resultado do Grep

É muito comum precisarmos rodar um comando X ou Y dependendo se acharmos algum valor em um arquivo qualquer ou em um resultado de um comando no Linux, Unix, etc. As pessoas usam massivamente o Grep para efetuar tal teste, então, um script muito simples e útil, é este:

#!/bin/bash
cat /etc/hosts | grep -q uol.com.br && echo “Achei uol em hosts” || echo “ERRO: Nao achei uol em hosts”

Neste exemplo, procuro uol.com.br em /etc/hosts, se encontrar, vou imprimir ACHEI, caso nao encontre, mostro um erro.

Enjoy!

Criando um Web Service Restful com Jersey

Criei um conjunto de slides bem simples e objetivo com o passo a passo para se criar um Web Service RESTful utilizando a API Jersey. Para quem quer conhecer esse mundo, acredito que vá ajudar bastante.

Tenha em mente que implementar um Web Service é relativamente simples, porém, preocupe-se sempre com a segurança e volumetria (carga, stress, usuários, etc), pois isso tende a derrubar muito servidor por ai!

Enjoy!

Deploy em dispositivo específico com IONIC

Eventualmente estamos com o celular plugado no computador e com algum simulador/emulador rodando, e queremos efetuar o deploy de uma aplicação Ionic em determinado dispositivo.

O comando é simples:

ionic run android --target=XXXX

Onde o XXXX deve ser substituído pelo ID que o seguinte comando mostrar:

adb devices

O comando adb está presente na pasta platform-tools do local de instalação do SDK do Android. Seu output é algo do tipo:

[~/Android/Sdk/platform-tools]$ ./adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
0115ba67 device

No meu caso, 0115ba67 é o dispositivo para o qual quero efetuar deploy, então o comando será:

ionic run android --target=0115ba67

Enjoy!

Categorias:Android, Mobile Tags:, , , , ,

Debugando aplicativos no Android

Poucas pessoas sabem, porém é possível debugar uma aplicação rodando no Android direto pelo Navegador (Chrome). Para fazer isso, conecte seu dispositivo via porta USB em seu computador, vá em Tools > Devices (ou algo assim). A janela abaixo irá abrir:

Selection_077Então, abra o aplicativo no seu celular que quer ver e clique em Inspect.

Selection_078Veja o resultado:

Selection_079Isso ajuda muito e é fácil de se fazer. Existem outras formas como utilizar o comando “adb logcat” que vem junto com a SDK do Android e esta disponível em platform-tools, porém, a mais simples e de fácil entendimento é esta que apresentei (em minha opinião).

Enjoy!