Como criar um projeto de teste no Windows 10 (pepino + capivara + selênio-webdriver)

O artigo foi desenvolvido para se familiarizar com o autoteste e a implantação do ambiente no Windows 10 e destina-se a quem conhece um pouco sobre a Cucumber + Capybara + Selenium-webdriver . A ideia do artigo surgiu devido a diferenças no ambiente de implantação no Windows 10 e Linux.


Algumas palavras sobre a gema Cucumber + Capybara + Selenium-webdriver (bibliotecas) necessárias para executar e preencher testes de interface do usuário com testes.

Pepino


O pepino é uma gema que permite escrever testes na linguagem humana. Para fazer isso, use a notação Gherkin, que define a estrutura e as regras para escrever scripts. Os detalhes podem ser lidos aqui


Capivara


A capivara é uma jóia que permite pesquisar / clicar / ... por elementos do navegador. I.e. É o link entre as etapas de pepino do teste e o driver da web (instância do navegador chamado). Aqui você pode ver os métodos desta gema.

Chave de selênio


Selenium-webdriver é uma ferramenta para automatizar as ações de um navegador da web. Em essência, esta é a instância do navegador.

Ações preliminares


Descrição das ações preliminares
Por conveniência, usaremos o RubyMine. Você pode baixar uma versão de teste por 30 dias.

Baixe o Firefox e o Chrome para executar os testes.

Baixe e instale o Git (sistema de controle de versão ou VCS similar, site oficial ). Mas o Git é necessário quando você já possui um projeto ou deseja armazenar seu código em um sistema Git.

Então vamos começar


Já temos o RubyMine instalado.

  1. Você precisa instalar a própria linguagem Ruby. Para fazer isso, vá aqui e instale o RubyInstaller. Eu escolhi a versão mais recente (RubyInstaller 2.5.1-2) com o pacote DevKit. Por meio deste pacote de configuração, você pode executar testes no console, como no Linux, bem como gerenciar gemas de forma flexível.
  2. O pacote RubyInstaller está instalado e estamos passando para a configuração.
    Se quisermos criar um novo projeto, abra o RubyMine e crie um projeto vazio, indicando o Ruby instalado.

  3. Em seguida, precisamos criar essa estrutura de pastas e arquivos de acordo com a anotação


    Descrito em detalhes aqui
  4. Gemfile - contém uma lista de gemas usadas no projeto

    Aqui está o conteúdo do nosso gemfile, com as gemas mais básicas para testes de interface do usuário
    source 'https://rubygems.org' gem 'cucumber' gem 'capybara' gem 'selenium-webdriver' gem 'chromedriver-helper' 


    Essas quatro gemas devem ser especificadas no Gemfile.
    gem 'chromedriver-helper' - driver chrome que permite executar testes no Chrome
    Com este gemfile, você precisa instalar nossas gemas selecionadas. A instalação no Windows é mais fácil na interface do RubyMine: menu Ferramentas -> Bundler -> Instalar . Bundler também é uma jóia, mas serve para controlar gemas. Mas você também pode fazer isso na linha de comando, localizada no menu do programa sob o nome Iniciar prompt de comando ...
    A propósito, usando esta linha de comando, você pode executar testes ignorando o RubyMine.
  5. O arquivo env.rb é o principal arquivo rb para executar testes de interface do usuário. Ao inicializar variáveis ​​e arquivos de teste, será o env.rb que será o primeiro. É o registro do navegador no qual os testes serão executados. Um exemplo pronto do env.rb em que o Chrome, o Firefox está registrado ou vamos entender que não precisamos de um navegador para executar testes.
    Casos em que um navegador não é necessário - verificamos solicitações de descanso, testes de integração, embora se acredite que os testes de pepino não sejam adequados para isso.

    Escrevendo env.rb
     require 'capybara/cucumber' require 'selenium-webdriver' Capybara.register_driver :driver do |app| case ENV['DRIVER'] when 'chrome' Capybara::Selenium::Driver.new(app, :browser => :chrome) when 'without_browser' Capybara.default_driver = :mechanize else client = Selenium::WebDriver::Remote::Http::Default.new Capybara::Selenium::Driver.new(app, :browser => :firefox, port: 10000 + Random.rand(1000), http_client: client) end end Capybara.default_driver = :driver Capybara.default_selector = :xpath 


    Além disso, aqui está a questão da versão do Firefox.
    Se você instalou o Firefox versão 46 ou inferior, para executar os testes corretamente, você precisa da gem 'capybara' versão '2.53.4' ou inferior.

    Se a versão do Firefox for superior a 46, ela funcionará em outros princípios baseados no "geckodriver" e, portanto, para executar os testes corretamente, é necessário instalar o geckodriver .

    Uma excursão pelas razões pelas quais o geckodriver é necessário
    Antes da versão 47, o driver de automação do Firefox era apenas uma extensão incluída em todos os clientes. Mas essa extensão foi removida devido a uma alteração na política que agora exige que todas as extensões sejam assinadas pelo Mozilla.

    Marionette é o novo driver que acompanha o Firefox. Este driver possui seu próprio protocolo, que é incompatível com o protocolo Selenium / WebDriver.

    Geckodriver é um servidor de aplicativos que implementa o protocolo Selenium / WebDriver. Ele traduz os comandos do Selenium e os redireciona para o driver Marionette.

    Uma nuance importante , após a instalação do "geckodriver", é necessário prescrever os caminhos do sistema para que o nosso "geckodriver" seja encontrado ao executar o env.rb.

    caminhos do sistema


  6. Em seguida, resta apenas escrever um teste de teste e executar no Chrome, Firefox e sem um navegador :). Por exemplo, escreveremos algumas etapas para inserir o correio mail.ru

    Descrição das etapas
     # encoding: UTF-8 # language: ru Given(/^   "(.*?)"$/) do |page| visit page end Given(/^  "(.*?)"   c id "(.*?)"$/) do |text, field_id| find("//input[@id='#{field_id}']").set(text) end Given(/^  "(.*?)"     id "(.*?)"$/) do |text, select_id| find("//select[@id='#{select_id}']/option[text()='#{text}']").click end Given(/^    "(.*?)"$/) do |text| find("//input[@value='#{text}']").click end Given(/^ (\d+) (?:|)$/) do |sec| sleep sec.to_i end 


  7. Assim como o próprio teste de pepino

    test.feature
     # encoding: UTF-8 # language: ru :   :       "https://mail.ru/"    "dorian.grey.2019"   c id "mailbox:login"    "********"   c id "mailbox:password"    "@inbox.ru"     id "mailbox:domain"      ""   5  


  8. Resta apenas verificar todos os nossos esforços e aproveitar a operação bem-sucedida dos testes de interface do usuário (no exemplo 1 do teste) :). A última configuração restante é a configuração da execução de teste. Vá para o menu RubyMine -> Editar configurações -> Opções de corredor - Aqui, basta selecionar o driver :)
    ENV ['DRIVER'] do env.rb é a configuração de inicialização. E só precisamos especificar "DRIVER = firefox" ou "DRIVER = chrome" nas Opções do corredor.

Lançamos



Isso é tudo, testes bem sucedidos de pepino para você!

Source: https://habr.com/ru/post/pt423123/


All Articles