如何使用Cucumber中的表与Ruby来验证Web表单上的数据

时间:2016-07-26 20:30:51

标签: ruby cucumber watir

我正在使用Cucumber和Ruby以及Watir webdriver。

我要做的是验证预先填充在Web表单上的数据是否与Cucumber中的features文件中的表中的数据相匹配。我需要帮助在步骤定义文件中编写Ruby代码。以下是我到目前为止的情况:

Cucumber feature: 
Then I will be able to view my information pre-populated from IAM as follows:

|First Name/Given Name  |Chimwemwe       |
|Last Name/Surname      |Rossi           |
|Country                |USA             |
|Address                |fdafda          |
|City                   |fdafd           |
|State                  |Louisana        |
|Postal Code            |99999           |

Then (/^I will be able to view my information pre-populated from IAM.$/) do   |table|
    information = table.rows_hash
    information.each do |entry|
    contact_info = entry [0]
    if @browser.text_field(:name=>'firstName').verify_contains(contact_info[0])==true
        puts "Passed"
    else
        puts "Failed"
    end
end

我现在只做第一行,直到我开始工作。我希望它最终遍历表格。

当我尝试运行脚本时,我得到的是这个错误:#table是一个Cucumber :: Core :: Ast :: DataTable。

我是Ruby / Cucumber的新手,这是我迄今为止编写的最复杂的脚本。任何有关如何做到这一点的帮助将非常有帮助。我知道我需要一个阵列,但我一直在网上看这么多,我觉得我的大脑会爆炸。谢谢。

1 个答案:

答案 0 :(得分:1)

除非您有一种简单的方法将Cucumber表映射到Watir字段,否则迭代可能没用。最简单的方法是直接检查测试中的每个字段是否与表格匹配。

我不确定您使用的是哪个断言库,但作为示例,以下内容使用了RSpec Expectations:

 <td><button type="button" id="edit" value="" class="btn btn-lg btn-link" data-toggle="tooltip" title ="Edit" style="color: black"><i class="glyphicon glyphicon-edit"></i></td>

请注意,测试将在第一个不正确的字段中失败。如果要一次声明所有字段,可以将它们检索到$(document).ready(function () { $("#edit").click(function () { var currentTD = $(this).parents('tr').find('td'); if( $(this).find('i').hasClass('glyphicon-edit')) { currentTD = $(this).parents('tr').find('td'); $.each(currentTD, function () { $(this).prop('contenteditable', true); $(this).css('background','yellow'); }); } else if( $(this).find('i').hasClass('glyphicon-ok-circle')) { $.each(currentTD, function () { $(this).prop('contenteditable', false); $(this).css('background',''); }); } $(this).find('i').toggleClass('glyphicon-edit').toggleClass('glyphicon-ok-circle'); }) }); 并将其与表格进行比较:

Then (/^I will be able to view my information pre-populated from IAM.$/) do |table|
  information = table.rows_hash

  expect(@browser.text_field(:name=>'firstName').value).to eq(information['First Name/Given Name'])
  expect(@browser.text_field(:name=>'lastName').value).to eq(information['Last Name/Surname'])
  # etc. for each field
end