如何在Windows 10上引发测试项目(黄瓜+水豚+硒网络驱动程序)

本文旨在使您熟悉Windows 10中的环境的自动测试和部署,并且适合那些对Cucumber + Capybara + Selenium-webdriver有所了解的人使用。 本文的想法是由于Windows 10和Linux上的部署环境不同而引起的。


关于Cucumber + Capybara + Selenium-webdriver gem(库)的几点说明,这些是运行和填充UI测试所需的。

黄瓜


ucumber是一颗宝石,可让您用人类语言编写测试。 为此,请使用Gherkin符号,该符号定义了编写脚本的结构和规则。 详情请点击这里


水豚


水豚是一颗宝石,可让您搜索/单击/ ...以查找浏览器元素。 即 它是测试的Cucumber步骤和webdriver(调用的浏览器的实例)之间的链接。 在这里,您可以查看此gem的方法。

Selenium-webdriver


Selenium-webdriver是用于自动执行Web浏览器操作的工具。 本质上,这是浏览器实例。

初步行动


初步行动说明
为了方便起见,我们将使用RubyMine。 您可以下载 30天的试用版

下载Firefox和Chrome浏览器以运行测试。

下载并安装Git(版本控制系统或类似的VCS, 官方网站 )。 但是,当您已经有一个项目或要将代码存储在Git系统中时,就需要Git。

所以我们开始吧


我们已经安装了RubyMine。

  1. 您需要安装Ruby语言本身。 为此,请转到此处并安装RubyInstaller。 我选择了带有DevKit软件包的最新版本(RubyInstaller 2.5.1-2)。 通过此配置包,您可以在Linux中从控制台运行测试,以及灵活地管理gem。
  2. RubyInstaller软件包已安装,我们继续进行配置。
    如果我们要创建一个新项目,请打开RubyMine并创建一个空项目,指示已安装Ruby。

  3. 接下来,我们需要根据注释创建文件夹和文件的这种结构


    此处详细描述
  4. Gemfile-包含项目中使用的宝石列表

    这是我们的gemfile的内容,其中包含用于UI测试的最基本的gem
    source 'https://rubygems.org' gem 'cucumber' gem 'capybara' gem 'selenium-webdriver' gem 'chromedriver-helper' 


    这4个gem必须在Gemfile中指定。
    gem'chromedriver-helper'-允许在Chrome上运行测试的Chrome驱动程序
    使用此gemfile,您需要安装我们选择的gem。 从RubyMine界面在Windows上安装是最简单的: 工具-> Bundler->安装菜单 。 Bundler也是宝石,但可以控制宝石。 但是,您也可以从命令行执行此操作,该命令行位于程序菜单中的名称为Start Command Prompt...。
    顺便说一句,使用此命令行,您可以绕过RubyMine运行测试。
  5. env.rb文件是用于运行UI测试的关键rb文件。 初始化变量和测试文件时,将是env.rb。 这是运行测试的浏览器的注册。 env.rb的现成示例,其中注册了Chrome,Firefox,或者让我们了解到我们根本不需要浏览器即可运行测试。
    不需要浏览器的情况-尽管我们认为Cucumber测试不太适合这样做,但我们会检查休息请求,集成测试。

    编写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 


    另外,这是Firefox的版本控制问题。
    如果您已安装Firefox 46或更低版本,则为了正确运行测试,您需要gem'capybara'版本'2.53.4'或更低版本。

    如果Firefox版本高于46,则它会基于“ geckodriver”基于其他原理工作,因此,要正确运行测试,您需要安装geckodriver

    为何需要壁虎驱动程序的原因
    在47版之前,Firefox自动化驱动程序只是每个客户端附带的扩展。 但是由于策略更改,此扩展名已被删除,该更改现在要求所有扩展名均由Mozilla签名。

    Marionette是Firefox附带的新驱动程序。 该驱动程序具有自己的协议,该协议与Selenium / WebDriver协议不兼容。

    Geckodriver是实现Selenium / WebDriver协议的应用程序服务器。 他翻译了Selenium命令,并将其重定向到Marionette驱动程序。

    重要的细微差别是 ,在安装“ geckodriver”之后,有必要规定系统路径,以便在执行env.rb时找到我们的“ geckodriver”。

    系统路径


  6. 接下来,仅需编写测试即可在Chrome,Firefox和没有浏览器的情况下运行:)。 例如,我们将写一些步骤输入mail.ru邮件

    步骤说明
     # 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. 以及黄瓜测试本身

    测试功能
     # 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. 剩下的只是检查我们的所有努力并享受UI测试的成功运行(在测试的示例1中):)。 剩下的最后一个设置是测试运行设置。 转到菜单RubyMine->编辑配置-> Runner选项-在这里我们只选择驱动程序:)
    env.rb中的ENV ['DRIVER'],这是启动设置。 我们只需要在“运行程序选项”中指定“ DRIVER = firefox”或“ DRIVER = chrome”。

我们启动



仅此而已,成功的黄瓜测试为您服务!

Source: https://habr.com/ru/post/zh-CN423123/


All Articles