Cucumber是一个解释器(interpreter),编写的feature文件在Cocumber中被称为Gherkin。所以,我在之前的文章中提到的Cucumber关键字,实际上是Gherkin语法。Gherkin可以算是一种DSL的写法,它能支持多种语言(例如英语、西班牙语、中文等)。Gherkin的关键字包括:
Feature
Background
Scenario
Scenario outline
Scenarios(或者Examples)
Given
When
Then
And(或者But)
|(该关键字用来定义table)
“”"(用于定义多行字符串)
#(用于注释)
与一般编程不同的是,在Cucumber中,跟在这些keyword之后的内容是完全随意而自由的,是真正的自然语言。这样的设定就使得由BA或者
客户编写feature成为可能。虽然feature的编写看似容易,不过要写好,也不容易。因为对于一个feature而言,可能存在多个场景。而且,
还需要考虑一些特殊场景。所以,场景的分割是非常重要的。通常情况下,应该从最常见且最容易的场景开始编写。---转自--http://www.agiledon.com/?tag=ruby
有兴趣的继续看这里---http://17test.info/?p=290 和 http://www.jenkins.asia/?p=129
从java selenium转变成cucumber ruby webdriver的一些尝试:
对页面元素用webdriver进行操作,封装成Object Page形式
class FillTheProductInfo
def initialize browser
@browser=browser
end
def input_info
#选择弹出的新页面
# PersonalProductList.new(@browser).switchNewWindow
hs = @browser.window_handles
ch = @browser.window_handle
hs.each do |h|
unless h == ch
@browser.switch_to.window(h)
end
end
#填写小额易捷贷贷款金额
sleep 2
@browser.find_element(:name => '3646841loansum').send_keys('500')
@browser.find_element(:xpath => "//form[@name='form13646841']/table/tbody/tr[6]/td[4]/input").click
sleep 2
@browser.switch_to.alert.accept
end
end
在step_definitions中调用之前封装的page: 部分代码如下
Given /^填写补充信息后,点击返回查看贷款页面$/ do
FillTheProductInfo.new(@browser).input_info
FillTheProductInfo.new(@browser).bank_info
end
在feature中编写use story 如下:
#coding: utf-8
Feature:企贷
As a 企业用户
I want 登录系统
So that 申请贷款
Scenario:企业用户登录系统申请贷款
Given 打开首页
When 请输入用户名:"****",输入密码:"*****",点击登录
Then 点击档案链接,页面跳转
And 填写企业基本资料
如果关键字想用中文的话,加上# language: zh-CN,如下所示
#coding: utf-8
# language: zh-CN
功能:企业用户修改自己的密码
作为一个用户
我想登录系统
然后可以修改密码
场景:企业用户修改自己的密码
#假如
当 我打开V4首页
那么 我输入用户名:"****" 和密码:"****"点击登录
而且 点击账户管理
运行结果图