我想验证页面上是否存在所有需要的元素。 我可以在Scenario Outline的Examples部分中列出它们。例如:
Scenario Outline: I am able to see all elements on My Page
When I am on my page
Then I should see the following <element> My Menu
Examples:
| element |
| MENU button |
| MY logo |
| MY_1 link |
| MY_2 link |
| Button_1 button |
| Button_2 button |
| Loggin button |
每一行都运行一个单独的方法来验证元素在页面上的存在。问题是 - 重新加载页面。 如何以更恰当的方式解决问题?
答案 0 :(得分:1)
您不需要方案大纲。您只需要一个验证表中所有元素的步骤。
Scenario: I am able to see all elements on My Page
When I am on my page
Then I should see the following elements in My Menu
| MENU button |
| MY logo |
| MY_1 link |
| MY_2 link |
| Button_1 button |
| Button_2 button |
| Loggin button |
您可以将表用作数组数组:
Then(/^I should see the following elements in My Menu$/) do |table|
table.raw.each do |menu_item|
@my_page_object.menu(menu_item).should == true
end
end
When(/^I am on my page$/) do
@my_page_object = MyPageObject.new(browser)
end
答案 1 :(得分:0)
首先,使用场景大纲将为您要测试的每个元素生成1个场景。这会产生巨大的运行时成本,而且还不是最佳选择。
其次,将所有这些信息都放在场景中也非常昂贵且没有效益。 Gherkin场景应该在业务级别而不是开发人员级别进行讨论,因此我将其重写为
Scenario: I am able to see all elements on Foo page
When I am on foo page
Then I should see all the foo elements
并使用类似
的方式实现它Then "I should see all the foo elements" do
expect(should_see_all_foo_elements).to be true
end
现在你可以制作一个帮助模块来完成这项工作
module FooPageStepHelper
def should_see_all_foo_elements
find('h1', text: /foo/) &&
...
end
end
World FooPageStepHelper
现在,当foo页面获得一个新元素时,您只需要在一个文件中更改一行。注意添加或删除元素时业务需求(所有元素应该出现在页面上)不会发生变化
(n.b。您可以通过多种方式改进辅助函数,以便在出现问题时获得更好的信息,甚至输出列出存在的元素)