本文旨在使您熟悉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。
- 您需要安装Ruby语言本身。 为此,请转到此处并安装RubyInstaller。 我选择了带有DevKit软件包的最新版本(RubyInstaller 2.5.1-2)。 通过此配置包,您可以在Linux中从控制台运行测试,以及灵活地管理gem。
- RubyInstaller软件包已安装,我们继续进行配置。
如果我们要创建一个新项目,请打开RubyMine并创建一个空项目,指示已安装Ruby。
- 接下来,我们需要根据注释创建文件夹和文件的这种结构
此处详细描述 - Gemfile-包含项目中使用的宝石列表
这是我们的gemfile的内容,其中包含用于UI测试的最基本的gemsource '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运行测试。
- 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”。
- 接下来,仅需编写测试即可在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
- 以及黄瓜测试本身
测试功能 # 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
- 剩下的只是检查我们的所有努力并享受UI测试的成功运行(在测试的示例1中):)。 剩下的最后一个设置是测试运行设置。 转到菜单RubyMine->编辑配置-> Runner选项-在这里我们只选择驱动程序:)
env.rb中的ENV ['DRIVER'],这是启动设置。 我们只需要在“运行程序选项”中指定“ DRIVER = firefox”或“ DRIVER = chrome”。
我们启动

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