2016-07-26 6 views
1

RubyとWatirのwebdriverでキュウリを使用しています。キュウリのテーブルをRubyで使用してウェブフォームのデータを確認するには

私がしようとしているのは、Webフォームにあらかじめ入力されているデータがCucumberのフィーチャーファイルの表のデータと一致することを確認することです。私はステップ定義ファイルに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にはかなり新しく、これまでに書いた中で最も複雑なスクリプトです。これを行う方法に関する助けが本当に役に立ちます。私は配列が必要だと知っていますが、私はこのオンラインの多くを見てきました。脳が爆発するような気がします。ありがとう。

+0

'から来verify_contains'のでしょうか?私はそれがWatirだとは思わないので、Watirを補うために別の宝石を使っていますか? –

+0

https://github.com/styleguide/ruby/syntaxを見直すことをお勧めします。実際のコード(ハッシュの要素へのアクセス方法など)には役立ちませんが、コードを提示するのに役立ちます少なくとも適切なルビーコードのように見える方法;-) –

答えて

1

キュウリのテーブルをWatirフィールドにマップする簡単な方法がない限り、反復は役に立たないかもしれません。最も簡単な方法は、テスト対象の各フィールドがテーブルに一致するかどうかを直接確認することです。

私はあなたが使用しているアサーションライブラリを確認していないが、一例として、以下はRSpecの期待使用しています。テストは最初の間違ったフィールドで失敗すること

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 

は注意を。あなたが一度にすべてのフィールドを主張したい場合は、Hashにそれらを取得し、テーブルにそれを比較することができます

Then (/^I will be able to view my information pre-populated from IAM.$/) do |table| 
    form_fields = { 
    'First Name/Given Name' => @browser.text_field(:name=>'firstName').value, 
    'Last Name/Surname' => @browser.text_field(:name=>'lastName').value 
    } 
    expect(form_fields).to eq(table.rows_hash) 
end 
+0

Thanks Justin。 2番目のオプションは完全に機能しました。私はそれをどうやってやるのか分かっていましたが、このオプションは検証の1つが失敗してもスクリプトを実行し続けます。 – Laura

関連する問題