Der Artikel soll Sie mit dem Autotest und der Bereitstellung der Umgebung in Windows 10 vertraut machen und richtet sich an diejenigen, die etwas über
Cucumber + Capybara + Selenium-Webdriver wissen . Die Idee für den Artikel entstand aufgrund von Unterschieden in der Bereitstellungsumgebung unter Windows 10 und Linux.
Ein paar Worte zum Cucumber + Capybara + Selenium-Webdriver-Juwel (Bibliotheken), die benötigt werden, um UI-Tests auszuführen und mit Tests zu füllen.
Gurke
ucumber ist ein Juwel, mit dem Sie Tests in der menschlichen Sprache schreiben können. Verwenden Sie dazu die Gherkin-Notation, die die Struktur und die Regeln für das Schreiben von Skripten definiert. Details können hier gelesen
werdenCapybara
Capybara ist ein Juwel, mit dem Sie nach Browserelementen suchen / klicken / ... können. Das heißt, Es ist die Verbindung zwischen den Cucumber-Schritten des Tests und dem Webdriver (Instanz des aufgerufenen Browsers).
Hier können Sie sich die Methoden dieses Edelsteins ansehen.
Selen-Webdriver
Selenium-Webdriver ist ein Tool zur Automatisierung der Aktionen eines Webbrowsers. Im Wesentlichen ist dies die Browserinstanz.
Vorbereitende Maßnahmen
Beschreibung der VormaßnahmenDer Einfachheit halber werden wir RubyMine verwenden. Sie können
eine Testversion für 30 Tage
herunterladen .
Laden Sie Firefox und Chrome herunter, um die Tests auszuführen.
Laden Sie Git herunter und installieren Sie es (Versionskontrollsystem oder ähnliches VCS,
offizielle Seite ). Git wird jedoch benötigt, wenn Sie bereits ein Projekt haben oder Ihren Code in einem Git-System speichern möchten.
Also fangen wir an
Wir haben RubyMine bereits installiert.
- Sie müssen die Ruby-Sprache selbst installieren. Gehen Sie dazu hier und installieren Sie RubyInstaller. Ich habe die neueste Version (RubyInstaller 2.5.1-2) mit dem DevKit-Paket ausgewählt. Mit diesem Konfigurationspaket können Sie Tests wie unter Linux von der Konsole aus ausführen und Edelsteine flexibel verwalten.
- Das RubyInstaller-Paket ist installiert und wir fahren mit der Konfiguration fort.
Wenn Sie ein neues Projekt erstellen möchten, öffnen Sie RubyMine und erstellen Sie ein leeres Projekt, das den installierten Ruby angibt.
- Als nächstes müssen wir diese Struktur von Ordnern und Dateien gemäß der Anmerkung erstellen
Hier ausführlich beschrieben - Gemfile - enthält eine Liste der Edelsteine, die im Projekt verwendet werden
Hier finden Sie den Inhalt unserer Gem-Datei mit den grundlegendsten Gems für UI-Testssource 'https://rubygems.org' gem 'cucumber' gem 'capybara' gem 'selenium-webdriver' gem 'chromedriver-helper'
Diese 4 Edelsteine müssen in der Gemfile angegeben werden.
gem 'chromedriver-helper' - Chrome-Treiber, mit dem Tests auf Chrome ausgeführt werden können
Mit dieser Edelsteindatei müssen Sie unsere ausgewählten Edelsteine installieren. Die Installation unter Windows ist am einfachsten über die RubyMine-Oberfläche: Extras -> Bundler -> Installationsmenü. Bundler ist auch ein Juwel, dient aber zur Kontrolle von Edelsteinen. Sie können dies aber auch über die Befehlszeile tun, die sich im Programmmenü unter dem Namen Start Command Prompt ... befindet.
Über diese Befehlszeile können Sie übrigens Tests unter Umgehung von RubyMine ausführen.
- Die Datei env.rb ist die Schlüssel-rb-Datei zum Ausführen von UI-Tests. Bei der Initialisierung von Variablen und Testdateien ist env.rb die allererste. Dies ist die Registrierung des Browsers, in dem die Tests ausgeführt werden. Ein fertiges Beispiel für env.rb, in dem Chrome, Firefox registriert ist, oder wir verstehen, dass wir zum Ausführen von Tests überhaupt keinen Browser benötigen.
Fälle, in denen kein Browser benötigt wird - wir prüfen Restanfragen, Integrationstests, obwohl angenommen wird, dass Gurkentests dafür nicht ganz geeignet sind.
Schreiben von 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
Hier ist auch das Problem der Versionierung von Firefox.
Wenn Sie Firefox Version 46 oder niedriger installiert haben, benötigen Sie zum korrekten Ausführen der Tests die Edelstein-Capybara-Version 2.53.4 oder niedriger.
Wenn die Firefox-Version höher als 46 ist, funktioniert sie nach anderen Prinzipien, die auf dem "Geckodriver" basieren. Um die Tests korrekt auszuführen, müssen Sie Geckodriver installieren .
Ein Ausflug in die Gründe, warum Geckodriver benötigt wirdVor Version 47 war der Firefox-Automatisierungstreiber nur eine Erweiterung, die in jedem Client enthalten war. Diese Erweiterung wurde jedoch aufgrund einer Richtlinienänderung entfernt, bei der jetzt alle Erweiterungen von Mozilla signiert werden müssen.
Marionette ist der neue Fahrer, der mit Firefox ausgeliefert wird. Dieser Treiber verfügt über ein eigenes Protokoll, das nicht mit dem Selenium / WebDriver-Protokoll kompatibel ist.
Geckodriver ist ein Anwendungsserver, der das Selenium / WebDriver-Protokoll implementiert. Er übersetzt die Selenium-Befehle und leitet sie an den Marionettenfahrer weiter.
Eine wichtige Nuance : Nach der Installation von "geckodriver" müssen die Systempfade vorgegeben werden, damit unser "geckodriver" bei der Ausführung von env.rb gefunden wird.
- Als nächstes bleibt nur noch ein Test zu schreiben und auf Chrome, Firefox und ohne Browser auszuführen :). Zum Beispiel werden wir einige Schritte schreiben, um die mail.ru Mail einzugeben
Beschreibung der Schritte # 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
- Sowie der Gurkentest selbst
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
- Es bleibt nur, alle unsere Bemühungen zu überprüfen und den erfolgreichen Betrieb von UI-Tests zu genießen (in Beispiel 1 des Tests) :). Die letzte verbleibende Einstellung ist das Setup des Testlaufs. Gehen Sie zum Menü RubyMine -> Konfigurationen bearbeiten -> Runner-Optionen - Hier wählen wir einfach den Treiber aus :)
ENV ['DRIVER'] von env.rb Dies ist die Starteinstellung. Und wir müssen nur "DRIVER = Firefox" oder "DRIVER = Chrome" in den Runner-Optionen angeben.
Wir starten

Das ist alles, erfolgreiche Gurkentests für Sie!