0

自動テストにキュウリを使用するのは初めてです。これまでのところ、私に与えられたタスクは、フォームに値を入力し、期待される結果を比較することだけでした。

値を入力する代わりに、きゅうりが反対のことをして値を読み取ることができるのではないかと思っていましたか?

ID の列を含む Web ページ上のテーブルを想像してください (以下のようなもの)。そのテーブルのすべての ID を読み取り、リストに格納したいと思います。その理由は、最終的には ID のリストを調べて、もう一度表を調べて、これらの ID のそれぞれの [表示] リンクをクリックしたいからです。これは奇妙に聞こえるかもしれませんが、それだけではありません。今のところ、列 2 の ID を収集してリストに貼り付け、リストを反復処理できるかどうかを知る必要があるだけです。

ここに画像の説明を入力

それは可能でしょうか?

キュウリの自動テストに関する私の知識は、広範な低レベル インターフェイス回帰テストに使用されるということです。単純な面倒な作業のように。私がやりたいことはキュウリの範囲外ですか?

これらの自動テストには、cucumber、ruby、watir を一緒に使用しています。


テーブルのhtmlコード:

<table id="row" class="data">
<thead>
    <tr>
        <th>Action</th>
        <th>Book ID</th>
        <th>...</th>
    </tr>
</thead>
<tbody>
    <tr class="odd">
        <td class="actionColumn">
            <input id="014112854edb_45ed_68e1d7bf" name="submit.view" class="action_link" onclick=" return setField('bookSearchResultForm','selectedId','123'); " type="submit" size="" value="View">
        </td>
        <td>123</td>
        <td>...</td>
    </tr>
    <tr class="even">
        <td class="actionColumn">
            <input id="014112854ede_52cb_3ef325a7" name="submit.view" class="action_link" onclick=" return setField('bookSearchResultForm','selectedId','444'); " type="submit" size="" value="View">
        </td>
                    <td>444</td>
        <td>...</td>
    </tr>
    <tr class="odd">
        <td class="actionColumn">
            etc etc
        </td>
        <td>443</td>
        <td>...</td>
    </tr>
</tbody>

4

1 に答える 1

0

すでに Cucumber を使用して値を読み取っているようです。つまり、それが期待される結果をチェックしている方法だと思います。

たとえば、Watir はテーブルの最初の列のすべての値の値を取得できます。

ids = @browser.table.tbody.trs.collect{ |tr| tr.td.text }

これを Cucumber ステップで使用して、特定の ID がテーブルのどこかに存在することを確認できます。

Then /the list of ids should include (.*)/ do |expected_id|
  ids = @browser.table.tbody.trs.collect{ |tr| tr.td.text }

  ids.should include?(expected_id)
end

Cucumber なしで上記の Watir コードを使用できることに注意してください。たとえば、スタンドアロン スクリプトで使用して、ページから情報をスクレイピングしたり、手動テスト中に情報を収集したりすることができます。

更新 - リンクの表示:

Cucumber はさておき、ID のリストを取得してビュー リンクを反復処理するには、次のようにします。

# Get the 2nd cell value in each row
ids = @browser.table.tbody.trs.collect{ |tr| tr.td(:index => 1).text }

# Click through each view link
ids.each do |id|
  # Find the row that contains the id
  row = @browser.table.tbody.trs.find{ |tr| tr.td(:text => id).present? }

  # Click the link in that row
  row.button(:text => 'View').click

  # Do whatever you want on the other page
  # Then make sure to return to this page
end
于 2013-09-11T16:27:53.100 に答える