2014-01-15 85 views
0

我有一个看起来像下面黄瓜特征文件传递的值(HREF要准确),如何在黄瓜特征文件

鉴于我登录到控制台

  • 当我导航到“href1”页面
  • 当我浏览到“href2”页面
  • 当我浏览到“href3”页面
  • 当我浏览到
  • 了“href4”页面

而不是写4次的时候命令我想知道我是否能以某种方式传递href的值并在when语句中调用它。

我有一个步骤定义它是这样的:

When(/^I navigate to the "(.*)" page$/) do |navigation_link| 
    @browser.link(:href => navigation_link).when_present.click 
end 

让我知道如果你需要更多的信息。

回答

1

多种选项做到这一点:

a)如果你需要测试,你可以浏览到每个independtly页面,你可以使用一个Scenario Outline,如:

Scenario Outline: Test navigation 
    Given I am logged in to the console 
    When I navigate to the "<href>" page 
Examples: 
    |href   | 
    |<actual_url1>| 
    |....   | 
    |<actual_url4>| 

在这种情况下,您的步骤不需要修改,并且应该按原样运行。 b)如果需要以相关方式导航到页面,即到达页面4需要您遵循页面1->页面2 - > ...页面X - >页面4,则可以使用table像:

Scenario: Test navigation 
    Given I am logged in to the console 
    When I navigate through the following pages: 
    |<actual_url1>| 
    |....   | 
    |<actual_url4>| 

然后在你的步骤定义:

When(/^i navigate through the following pages:$/) do |table| 
    table.raw.each do |navigation_link| 
    @browser.link(:href => navigation_link.join).when_present.click 
    end 
end 

(了解更多关于表&概述这里:http://cukes.info/step-definitions.html

虽然,如果您只是想检查是否可以导航到第4页,我不会建议使用它们中的任何一个。我宁愿创建一个步骤,只导航到第4页,并在该步骤的定义中 - >在变量中获取url_paths(最好在单独的路径文件中加载并从那里加载) - >导航到其他先决条件页面 - >导航到最后一页。

这样你只会描述行为而不是文字导航点。

+0

我尝试第二种方法,但它抛出一个错误如下场景: 鉴于我登录到控制台 当我通过以下页面导航: | /在iTunes上/#/集线器| |#/菜单/集线器/ ReportsAnalytics | |#/ Menu/Hub/ReportsAnalytics/Reports | |/AirWatch /#/ Report/List/AllReports | 预计[String,Regexp]之一,得到[“]:Array(TypeError)./features/step_definitions/Report.rb:45:in'block(2 levels)in

+0

对不起,是的,你会得到他们作为数组。只要将它们转换为字符串为:href => navigation_link.join(更新我的答案与之相同) – Sam

+0

谢谢,它工作得很好。 –