Ruby黄瓜自动化

时间:2016-11-09 07:52:26

标签: selenium-webdriver automation cucumber capybara bdd

我们正在使用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 "xxx@gmail.com"

所以如果定位器"位置"更改为其他内容然后我们必须更新包含定位器的所有功能文件" location"

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

4 个答案:

答案 0 :(得分:1)

基本上"你正在纠错它" - 您所拥有的测试类型正是几年前从黄瓜中删除web_steps.rb的原因。下面的文章讨论了在使用黄瓜时应该如何编写测试 - http://aslakhellesoy.com/post/11055981222/the-training-wheels-came-off

答案 1 :(得分:0)

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

$locator = 'location'

如果HTML发生变化,您只需在spec_helper中更改一次,定位器就会在所有功能文件中发生变化。

答案 2 :(得分:0)

关于这个主题已经有很多很棒的文章了,但我真的很喜欢这个push HOW down。总结一下:

  
      
  • 赞成陈述性BDD
  •   
  • 重构介绍DSL
  •   
  • 将所有UI敏感细节(例如选择器)移动到代码中的单一事实来源
  •   

Loadable componentPage objectObject map等模式可以帮助您完成所有这些。

答案 3 :(得分:0)

This is our exisitng structure

This is something i am thinking of, by creating multiple web_steps

我知道页面对象模型是我应该遵循的,但需要花费大量时间。 使用全局变量的另一个想法,我从未做过,但截至目前,这看起来是可行的。