Winium automatizando testes DeskTop com Selenium

11

De repente me deparo com um cenário diferente, novo emprego cheio de desafios e oportunidades. Ocasião de exercer e executar minha maior paixão que é a de automatizar testes.

Primeiro desafio, nos últimos 8 anos trabalhei com equipes de desenvolvedores Java, eis que minha nova equipe só possui Dev’s C#. Então seguindo as boas práticas onde o QA deve falar a mesma língua da equipe vamos aprender Selenium com C#! Mas isso é assunto pra um próximo artigo.

O Desafio que vou compartilhar aqui é a necessidade de automatizar para aplicações Desktop. Pesquisei e encontrei ferramentas bem interessantes como Autoit, Sikuli…

Mas será que não dá pra automatizar desktop usando o glorioso Selenium?

Foi ai que conheci o Winium Uma ferramenta Open Source mantida pela 2GIS para automação de aplicativos desktop. Que veio oferecer através do seu Driver suporte para aplicações Windows. Com ela podemos escrever testes em qualquer linguagem de programação que seja suportada pelo Webdriver e ela oferece suporte para Aplicativos do Windows Desktop (WPF, WinForms) entre outros como aplicação mobile para Windowsphone.

Neste Post, estarei mostrando como automatizar uma operação simples na calculadora do Windows.
Primeiro vamos fazer o download do Winium Driver,
https://github.com/2gis/Winium.Desktop/releases
É necessário também o uso de uma ferramenta que nos apontará qual Locator (elementos da tela) que deveremos usar nos testes com Selenium. Testei 3 ferramentas, o

Mãos a massa!

Crie uma classe de test no Visual studio ;
Crie a propiedade RemoteWebDriver
public RemoteWebDriver Driver { get; set; }

Para iniciar é necessário chamar o navegador do Winium criaremos então o método SetUp assim:

public void SetUp()
        {
            var dc = new DesiredCapabilities();
            dc.SetCapability("app", @"C:\Windows\System32\calc.exe");
            this.Driver = new RemoteWebDriver(new Uri("http://localhost:9999"), dc);
}

Para o tearDow podemos usar método close do Selenium webdriver.

[TearDown]
       public void after()
       {
           Driver.Close();
       }

Vamos Agora começar a inspecionar as janelas abertas para isso abra o UISpy;

0_1488551144019_2017-03-02_083559artigo1.png

Observe que o UISpy exibe todas as janelas abertas entre elas esta a calculadora , que será o aplicativo que iremos testar.
Navegando na Treeview encontraremos os elementos no painel properties na lateral direita. Para automatizar o teste podemos passar o AutomationID ou o Name.

0_1488551185072_2017-03-02_092710a3.png

Observe que para o numero “2” o Name é “2” e o AutomationID é “132”.Dessa forma vamos fazer o método de teste somando 2 + 2;

[Test]
        public void Calcular()
        {

            Driver.FindElement(By.Id("132")).Click();
            Driver.FindElement(By.Id("93")).Click();
            Driver.FindElement(By.Name("2")).Click();
            Driver.FindElement(By.Name("Igual a")).Click();
            Thread.Sleep(2000);
            Assert.AreEqual(true, Driver.FindElement(By.Name("4")).Displayed);
           
            
        }

Para executar o teste é preciso que o driver do Winium esteja rodando, Descompacte o Driver baixado no início deste artigo e execute.
0_1488551062888_2017-03-02_150858a4.png

Agora é so rodar o teste .

Ótimo Tutorial, parabéns.

Excelente, faz tempo que procuro algo do tipo.

@bruwesley , Obrigado pelo feedback!

Boa @Fernando-Pimentel eu vejo bastante gente perguntando sobre isso, já é um ponta pé inicial para os interessados(as).

Excelente artigo!

Apenas complementando, atentem-se de utilizar o package “using OpenQA.Selenium.Remote;” para rodar certinho ;)


Carol Ciola

Obrigado @Fred-Moreira ,@CarolCiola e @Rafael-Chiavegatto , esses Feedbacks são muito importantes para publicação de novos posts. abraço!

@Fernando-Pimentel pelo que percebi o AutomationId gera um número diferente a cada vez que abrimos o UISpy, já o Name não. Creio que por conta disso, a utilização do Name seja melhor, correto?


Carol Ciola

@CarolCiola , é um cuidado que se pode tomar, entretanto a aplicação que estou automatizando não deparei com essa mudança de Id’s . Mas acredito que seja uma pratica eficiente , alinhar com os Dev’s quanto a colocação de names e usar os mesmos.

Ótimo post @Fernando-Pimentel, de grande valia.
Porém sobre a ferramenta UISpy, o site da microsoft informa que é obsoleto e não está mais dispon´vel, sendo substituída pelo Inspect.exe.

Obrigado ´pelo FeedBack @Paulo-Gonçalves , apesar da microsoft ter descontinuado ela ainda é a que melhor me atende , no github do winium eles disponibilizam a ferramenta para dowload

https://github.com/2gis/Winium.Cruciatus/tree/master/tools/UISpy

Tenho uma duvida, comparando o Winnium com o appium desktop vocês teriam um Prós e Contras?

@Fernando-Pimentel, excelente artigo.

Log in to reply

Looks like your connection to Agile Testers was lost, please wait while we try to reconnect.