segunda-feira, 21 de março de 2011

Desafio Selenium: Edição de Campos

Olá Pessoal!
Agora segue mais um Desafio Selenium, que agora consiste na edição de três dados básicos: nome, e-mail e telefone.
O intuito deste desafio não é a validação de campos e sim a automação da edição destes campos com o Selenium IDE, onde esta edição não atualiza a página (edição inline)...

Logo o que precisa ser feito é somente um clique sobre o item (nome, e-mail ou telefone), a alteração da informação e a persistência dela (clicar no botão 'Salvar'). Após isso é necessário a validação das informações adicionadas, para garantir que elas estarão lá!

Essa é bem fácil e, basicamente, conseguimos resolver com apenas um comando!
E esse comando não pode ser o pause!

http://www.eliasnogueira.com/arquivos_blog/selenium/desafio/index.html

Qualquer dúvida ou sugestões de desafios não deixe de comentar!

Solução!

Bem pessoal, a solução deste desafio já se encontra disponível!
Se você está vendo este post somente agora, tente fazer o desafio sem ver a resposta e o vídeo explicativo!

O link para a página do principal dos desafios é: http://www.eliasnogueira.com/arquivos_blog/selenium/desafio/index.html

Vídeo explicativo


Abraços!

4 comentários:

  1. ótimo desafio!

    Apesar de falar que esse é mais fácil eu achei ele mais difícil que o primeiro.

    Muito bom esses desafios! Da pra conhecer alguns dos "truques" do selenium antes de encontrá-los na prática.

    Parabéns pela iniciativa. Vou fazer todos!

    ResponderExcluir
  2. package Teste;

    import com.thoughtworks.selenium.*;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import java.util.regex.Pattern;

    public class TesteCampo extends SeleneseTestCase {
    @Before
    public void setUp() throws Exception {
    selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://www.eliasnogueira.info/");
    selenium.start();
    }

    @Test
    public void testECampos() throws Exception {
    selenium.open("/arquivos_blog/selenium/desafio/index.html");
    selenium.click("link=Efetuar uma edição em campos in-line");
    selenium.waitForPageToLoad("30000");

    selenium.click("name_rg_display_section");
    selenium.type("nome_pessoa", "Beltrano de tal");
    selenium.click("//input[@value='Salvar']");
    Thread.sleep(5000);

    if(selenium.isTextPresent("Beltrano de tals")) {
    System.out.println("Elemento Nome Pessoa presente na tela !!!!\n");
    } else {
    System.out.printf("Elemento Nome Pessoa não presente na tela !!!!!\n");

    }


    selenium.click("email_rg_display_section");
    selenium.type("email_value", "beltrano.detal@gmail.com");
    selenium.click("//input[@value='Salvar' and @type='button' and @onclick=\"document.getElementById('email_hv_editing_section').style.display='none';document.getElementById('email_hv_saving_section').style.display='';var req = 'edicaoAjaxUpdate.php?part=email&val=' + document.getElementById('email_value').value;sndReq(req);\"]");
    Thread.sleep(5000);

    if(selenium.isTextPresent("exact:Email: beltrano.detal@gmail.com")) {
    System.out.println("Elemento Email presente na tela !!!!\n");
    } else {
    System.out.printf("Elemento Email não presente na tela !!!!.");
    }


    selenium.click("phone_rg_display_section");
    selenium.type("phone_value", "06132115545");
    selenium.click("//input[@value='Salvar' and @type='button' and @onclick=\"document.getElementById('phone_hv_editing_section').style.display='none';document.getElementById('phone_hv_saving_section').style.display='';var req = 'edicaoAjaxUpdate.php?part=phone&val=' + document.getElementById('phone_value').value;sndReq(req);\"]");
    Thread.sleep(5000);

    if(selenium.isTextPresent("exact:Telefone: 06132115545")) {
    System.out.println("Elemento Telefone presente na tela !!!!\n");
    } else {
    System.out.printf("Elemento Telefone não presente na tela !!!!\n");
    }


    }

    @After
    public void tearDown() throws Exception {
    selenium.stop();
    }
    }


    Optei por informar erro no console ao invés do trace do junit, pois em caso de ocorrência nos primeiros testes a execução do restante continuará.

    ResponderExcluir
  3. estou tentando me aprofundar em automação, lendo livros e buscando ferramentas... muito bom os desafios... servem como estimulo... espero que depois surjam tb pro selenium rc

    ResponderExcluir
  4. Olá.
    Primeiramente parabens pela iniciativa adorei isso. Pode mandar o próximo. rsrs =P
    Bem. A solução é simples. Segue:

    open http://www.eliasnogueira.info/arquivos_blog/selenium/desafio/edicao.php

    click name_rg_display_section

    store Um Nome Qualquer nome

    store email.qualquer@gmail.com email

    store 16 9744-5566 tel

    type nome_pessoa ${nome}

    click //input[@value='Salvar']

    waitForTextPresent ${nome}

    click email_rg_display_section

    type email_value ${email}

    click //tr[6]/td/div/input[2]

    waitForTextPresent ${email}

    click //div[@id='phone_rg_display_section']/b

    type phone_value ${tel}

    click //tr[7]/td/div/b

    waitForTextPresent ${tel}

    ResponderExcluir