L'article est conçu pour vous familiariser avec l'autotest et le déploiement de l'environnement dans Windows 10 et est destiné à ceux qui connaissent un peu
Cucumber + Capybara + Selenium-webdriver . L'idée de l'article est née en raison de différences dans l'environnement de déploiement sur Windows 10 et Linux.
Quelques mots sur la gemme Cucumber + Capybara + Selenium-webdriver (bibliothèques) qui sont nécessaires pour exécuter et remplir les tests d'interface utilisateur avec des tests.
Concombre
Le concombre est un joyau qui vous permet d'écrire des tests dans le langage humain. Pour ce faire, utilisez la notation Gherkin, qui définit la structure et les règles d'écriture des scripts. Les détails peuvent être lus
iciCapybara
Capybara est un joyau qui vous permet de rechercher / cliquer / ... pour les éléments du navigateur. C'est-à-dire C'est le lien entre les étapes Cucumber du test et le webdriver (instance du navigateur appelé).
Ici, vous pouvez regarder les méthodes de ce joyau.
Sélénium-webdriver
Selenium-webdriver est un outil pour automatiser les actions d'un navigateur web. Il s'agit essentiellement de l'instance de navigateur.
Actions préliminaires
Description des actions préliminairesPour plus de commodité, nous utiliserons RubyMine. Vous pouvez
télécharger une version d'essai pendant 30 jours.
Téléchargez Firefox et Chrome pour exécuter les tests.
Téléchargez et installez Git (système de contrôle de version ou VCS similaire,
site officiel ). Mais Git est nécessaire lorsque vous avez déjà un projet ou que vous souhaitez stocker votre code dans un système Git.
Commençons donc
Nous avons déjà installé RubyMine.
- Vous devez installer le langage Ruby lui-même. Pour ce faire, allez ici et installez RubyInstaller. J'ai choisi la dernière version (RubyInstaller 2.5.1-2) avec le package DevKit. Grâce à ce package de configuration, vous pouvez exécuter des tests à partir de la console, comme sous Linux, ainsi que gérer de manière flexible les gemmes.
- Le package RubyInstaller est installé et nous passons à la configuration.
Si nous voulons créer un nouveau projet, ouvrez RubyMine et créez un projet vide, indiquant le Ruby installé.
- Ensuite, nous devons créer cette structure de dossiers et de fichiers en fonction de l'annotation
Décrit en détail ici - Gemfile - contient une liste de gemmes utilisées dans le projet
Voici le contenu de notre gemfile, avec les gemmes les plus basiques pour les tests d'interface utilisateursource 'https://rubygems.org' gem 'cucumber' gem 'capybara' gem 'selenium-webdriver' gem 'chromedriver-helper'
Ces 4 gemmes doivent être spécifiées dans le Gemfile.
gem 'chromedriver-helper' - pilote chrome qui permet d'exécuter des tests sur Chrome
Avec ce gemfile, vous devez installer nos gemmes sélectionnées. L'installation sur Windows est plus facile à partir de l'interface RubyMine: Outils -> Bundler -> menu Installer . Bundler est également une gemme, mais sert à contrôler les gemmes. Mais vous pouvez également le faire à partir de la ligne de commande, qui se trouve dans le menu du programme sous le nom Démarrer l'invite de commande ...
Par ailleurs, en utilisant cette ligne de commande, vous pouvez exécuter des tests en contournant RubyMine.
- Le fichier env.rb est le fichier rb clé pour l'exécution des tests d'interface utilisateur. Lors de l'initialisation des variables et des fichiers de test, ce sera env.rb qui sera le tout premier. C'est l'enregistrement du navigateur sur lequel les tests s'exécuteront. Un exemple prêt à l'emploi d'env.rb où Chrome, Firefox est enregistré, ou comprenons que nous n'avons pas du tout besoin d'un navigateur pour exécuter des tests.
Cas où un navigateur n'est pas nécessaire - nous vérifions les demandes de repos, les tests d'intégration, bien que l'on pense que les tests Cucumber ne conviennent pas tout à fait.
Écriture 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
En outre, voici le problème de la version de Firefox.
Si vous avez installé Firefox version 46 ou inférieure, alors pour exécuter les tests correctement, vous avez besoin de la gemme 'capybara' version '2.53.4' ou inférieure.
Si la version de Firefox est supérieure à 46, alors elle fonctionne sur d'autres principes basés sur le «geckodriver» et donc, pour exécuter les tests correctement, vous devez installer geckodriver .
Une excursion dans les raisons pour lesquelles le geckodriver est nécessaireAvant la version 47, le pilote d'automatisation Firefox n'était qu'une extension incluse avec chaque client. Mais cette extension a été supprimée en raison d'un changement de politique qui exige désormais que toutes les extensions soient signées par Mozilla.
Marionette est le nouveau pilote fourni avec Firefox. Ce pilote a son propre protocole, qui est incompatible avec le protocole Selenium / WebDriver.
Geckodriver est un serveur d'applications qui implémente le protocole Selenium / WebDriver. Il traduit les commandes Selenium et les redirige vers le pilote Marionette.
Une nuance importante , après avoir installé "geckodriver", il est nécessaire de prescrire les chemins du système pour que notre "geckodriver" soit trouvé lors de l'exécution d'env.rb.
- Ensuite, il ne reste plus qu'à écrire un test test et à l'exécuter sur Chrome, Firefox et sans navigateur :). Par exemple, nous écrirons quelques étapes pour entrer le mail mail.ru
Description des étapes # 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
- Ainsi que le test du concombre lui-même
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
- Il ne reste plus qu'à vérifier tous nos efforts et profiter du bon fonctionnement des tests UI (dans l'exemple 1 du test) :). Le dernier paramètre restant est la configuration du test. Allez dans le menu RubyMine -> Edit Configurations -> Runner Options - Ici, nous sélectionnons simplement le pilote :)
ENV ['DRIVER'] de env.rb c'est le paramètre de lancement. Et nous avons juste besoin de spécifier "DRIVER = firefox" ou "DRIVER = chrome" dans les options du Runner.
Nous lançons

C'est tout, des tests de concombre réussis pour vous!