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
aquiCapivara
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 preliminaresPor 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.
- 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.
- 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.
- Em seguida, precisamos criar essa estrutura de pastas e arquivos de acordo com a anotação
Descrito em detalhes aqui - 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áriosource '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.
- 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árioAntes 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.
- 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
- 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
- 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ê!