2016-11-09 152 views
0

我们正在做自动化使用RubyCucumber。我们有大约80个功能文件,1个web_Steps文件包含所有通用步骤。
我们面临的问题是所有定位器都存在于功能文件中。因此,如果html结构发生变化,那么我们必须更新所有相应文件中的定位器,这非常耗时。例如:
网步:红宝石黄瓜自动化

And /^I fill in "([^"]*)" with "([^"]*)"$/ do |field, value| 
fill_in(field, with: value) 
end 

特性文件:

And I fill in "location" with "Mumbai" 
And I fill in "contact_details" with "[email protected]" 

因此,如果定位“位置”改为别的东西,然后我们必须更新所有包含定位器的功能文件“的位置“

有没有更好的方法来解决这个问题?

+0

我不知道我是否真的理解你的问题。但是,如果我这样做:你不能创建一个全局变量'$ locator ='location''?所以你只需要改变它,它会改变所有的功能文件。 – fabersky

+0

另外,如果您有许多这些可变变量,则创建一个全局散列并将定位器与合适的键一起存储。 – Grasshopper

+0

你在使用页面对象吗?如果没有,你应该。 – lauda

回答

0

我会在你的spec_helper.rb添加一个全局变量

$locator = 'location' 

万一HTML的变化,你将能够轻松地在您的spec_helper只有一次改变它,定位器会在您所有的功能文件更改。

+0

我无法理解我的websteps如何理解选择哪个全局变量。 你可以给一些参考网站这个。 – Genex

0

这个主题上已经有很多很棒的文章,但我真的很喜欢这个push HOW down。概括起来:

  • 青睐声明BDD
  • 重构推出DSL
  • 移动所有UI敏感信息(如选择),以单一数据源代码中的

Loadable componentPage objectObject map这样的模式将帮助你解决所有这些问题。