Tutorial Sikuli para Selenium Completa

Em que estรก Sikuli Selenium?

Sikuli รฉ uma ferramenta de automaรงรฃo de teste baseada em GUI de cรณdigo aberto. ร‰ usado principalmente para interagir com elementos de pรกginas da web e lidar com pop-ups baseados em janelas. Sikuli usa a tรฉcnica de โ€œReconhecimento de imagemโ€ e โ€œGUI de controleโ€ para interagir com elementos de pรกginas da web e janelas pop-up. No Sikuli, todos os elementos da web sรฃo tomados como imagens e armazenados dentro do projeto.

Como usar Sikuli com Selenium Driver da Web

O Sikuli pode ser integrado ao selenium webdriver usando o arquivo Sikuli JAR.

A sequรชncia abaixo รฉ a lista de etapas para configurar o Sikuli com Selenium webdriver.

Etapa 1) Baixar o arquivo Sikuli JAR do URL abaixo e extraia o conteรบdo do arquivo ZIP para uma pasta.

https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5

Use Sikuli com Selenium Driver da Web

Passo 2) Crie um novo projeto JAVA em Eclipse e adicione o arquivo JAR ao caminho de construรงรฃo, junto com os arquivos jar de selรชnio usando o botรฃo direito do mouse no projeto -> Caminho de construรงรฃo -> Configurar caminho de construรงรฃo

use Sikuli com Selenium Driver da Web

Depois de adicionar o arquivo JAR ao caminho de construรงรฃo do projeto, as classes fornecidas pelo Sikuli podem ser usadas.

Aula de tela em Sikuli

A classe Screen รฉ a classe base para todos os mรฉtodos fornecidos pelo Sikuli. A classe Screen contรฉm mรฉtodos predefinidos para todas as operaรงรตes comumente executadas em elementos da tela, como clicar, clicar duas vezes, fornecer entrada para uma caixa de texto, passar o mouse, etc. A seguir estรก a lista de mรฉtodos comumente usados โ€‹โ€‹โ€‹โ€‹fornecidos pela classe Screen.

Forma Descriรงรฃo Sintaxe
Clique Este mรฉtodo รฉ usado para clicar em um elemento da tela usando o nome da imagem como parรขmetro. Tela s = new Tela();

s.click(โ€œQA.pngโ€);

Duplo click Este mรฉtodo รฉ usado para clicar duas vezes em um elemento. Aceita o nome da imagem como parรขmetro. Tela s = new Tela();

s.doubleClick(โ€œQA.pngโ€);

Formato Este mรฉtodo รฉ usado para fornecer valor de entrada a um elemento. Aceita o nome da imagem e o texto a serem enviados como parรขmetros.

s.type(โ€œQA.pngโ€,โ€TEXTOโ€);

Pairar Este mรฉtodo รฉ usado para passar o mouse sobre um elemento. Aceita o nome da imagem como parรขmetro.

s.hover(โ€œQA.pngโ€);

Encontre Este mรฉtodo รฉ usado para localizar um elemento especรญfico na tela. Aceita o nome da imagem como parรขmetro.

s.find(โ€œQA.pngโ€);

Classe de padrรฃo em Sikuli

A classe padrรฃo รฉ usada para associar o arquivo de imagem a atributos adicionais para identificar exclusivamente o elemento. Toma o caminho da imagem como parรขmetro.

Padrรฃo p = novo Padrรฃo(โ€œCaminho da imagemโ€);

A seguir estรฃo os mรฉtodos mais comumente usados โ€‹โ€‹da classe Pattern.

Forma Descriรงรฃo Sintaxe
getNomeArquivo Retorna o nome do arquivo contido no objeto Pattern.

Padrรฃo p = novo Padrรฃo(โ€œD:\Demo\QA.pngโ€);

String nome do arquivo = p.getFileName();

semelhante Este mรฉtodo retorna um novo objeto Pattern com similaridade definida para um valor especificado. Aceita o valor de similaridade entre 0 e 1 como parรขmetro. Sikuli procura todos os elementos que estรฃo dentro do intervalo de similaridade especificado e retorna um novo objeto padrรฃo.

Padrรฃo p1 = p.similar(0.7f);

Exato Este mรฉtodo retorna um novo objeto padrรฃo com similaridade definida como 1. Ele procura apenas uma correspondรชncia exata do elemento especificado.

Padrรฃo p1 = p.exato();

Exemplo de cรณdigo para upload de arquivo usando Sikuli

O cรณdigo abaixo explica o uso do Sikuli para upload de arquivos em Firefox.

package com.sikuli.demo;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.sikuli.script.FindFailed;
import org.sikuli.script.Pattern;
import org.sikuli.script.Screen;
import org.openqa.selenium.chrome.ChromeDriver;

public class SikuliDemo {

    public static void main(String[] args) throws FindFailed {

        System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
        String filepath = "D:\\Guru99Demo\\Files\\";
        String inputFilePath = "D:\\Guru99Demo\\Files\\";
        Screen s = new Screen();
        Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG");
        Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
        WebDriver driver;

        // Open Chrome browser    
        driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/image_upload/index.php");

        // Click on Browse button and handle windows pop up using Sikuli
        driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
        s.wait(fileInputTextBox, 20);
        s.type(fileInputTextBox, inputFilePath + "Test.docx");
        s.click(openButton);

        // Close the browser
        driver.close();
    }
}

Explicaรงรฃo do cรณdigo:

Passo 1) A primeira instruรงรฃo envolve definir o caminho executรกvel do driver para o Chrome.

System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");

Passo 2) Use uma ferramenta de captura de tela como Snipping Tool para tirar screenshots do popup do Windows 'FileTextBox' e botรฃo 'Abrir'.

Exemplo de cรณdigo para upload de arquivo usando Sikuli

Esta รฉ a aparรชncia da sua captura de tela: โ€“

Exemplo de cรณdigo para upload de arquivo usando Sikuli

As imagens para a caixa de texto de entrada de arquivo do Windows e o botรฃo Abrir sรฃo armazenadas em 'FileTextBox.PNG' e 'OpenButton.PNG'.

Sikuli utiliza a tรฉcnica de reconhecimento de imagem para reconhecer elementos na tela. Ele encontra elementos na tela apenas com base em suas imagens.

Exemplo: Se vocรช deseja automatizar a operaรงรฃo de abertura do bloco de notas, entรฃo vocรช precisa armazenar a imagem de um รญcone da รกrea de trabalho para o bloco de notas em um arquivo PNG e realizar a operaรงรฃo de clique nele.

No nosso caso, ele reconhece a caixa de texto de entrada do arquivo e abre o botรฃo Windows popup usando as imagens armazenadas. Se a resoluรงรฃo da tela mudar da captura de imagem para a execuรงรฃo do script de teste, o comportamento do Sikuli seria inconsistente. Portanto, รฉ sempre aconselhรกvel executar o script de teste na mesma resoluรงรฃo em que as imagens sรฃo capturadas. A alteraรงรฃo no tamanho do pixel das imagens farรก com que o Sikuli lance uma exceรงรฃo FindFailed.

Passo 3) As prรณximas instruรงรตes incluem a criaรงรฃo de objetos para as classes Screen e Pattern. Crie um novo objeto de tela. Defina o caminho do arquivo que deseja carregar como parรขmetro para o objeto Padrรฃo.

Screen s = new Screen();
Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG");
Pattern openButton = new Pattern(filepath + "OpenButton.PNG");

Passo 4) As declaraรงรตes abaixo envolvem a abertura do navegador Chrome com o URL: https://demo.guru99.com/test/image_upload/index.php

driver = new ChromeDriver();
driver.get("https://demo.guru99.com/test/image_upload/index.php");

O URL acima รฉ um aplicativo de demonstraรงรฃo para demonstrar a funcionalidade de upload de arquivos.

Passo 5) Clique no botรฃo escolher arquivo usando a instruรงรฃo abaixo

driver.findElement(By.xpath(".//*[@id='photoimg']")).click();

Passo 6) Aguarde o pop-up do Windows aparecer. O mรฉtodo Wait รฉ usado para lidar com o atraso associado ร  abertura de janelas pop-up apรณs clicar no botรฃo navegar.

s.wait(fileInputTextBox, 20);

Passo 7) Digite o caminho do arquivo na caixa de texto do arquivo de entrada e clique no botรฃo Abrir

s.type(fileInputTextBox, inputFilePath + "Test.docx");
s.click(openButton);

Passo 8) Feche o navegador

driver.close();

Saรญda:

Inicialmente, o script abre o navegador Chrome

Exemplo de cรณdigo para upload de arquivo usando Sikuli

Ao clicar no botรฃo 'Escolher arquivo', a tela pop-up do arquivo do Windows aparecerรก. Insere os dados na caixa de texto de entrada de arquivo e clica no botรฃo 'Abrir'

Exemplo de cรณdigo para upload de arquivo usando Sikuli

A tela abaixo รฉ exibida quando o upload do arquivo รฉ concluรญdo e o navegador fecha

Exemplo de cรณdigo para upload de arquivo usando Sikuli

Conclusรฃo

Sikuli รฉ usado para lidar com objetos flash em uma pรกgina da web e janelas pop-up com facilidade. Sikuli รฉ melhor usado quando os elementos da interface do usuรกrio nรฃo mudam com frequรชncia. Devido a esta desvantagem, do ponto de vista dos testes de automaรงรฃo, o Sikuli recebe menos preferรชncia em comparaรงรฃo com outras estruturas, como Robot e AutoIT.

Resuma esta postagem com: