2

私は1年前からキュウリを使用しており、数週間からpage-object-gemを追加しています。テストを実行すると、次のメッセージが表示されます。

非推奨の警告
commentPage.rb:23:in `block indelete_comment'でcheckboxという名前のメソッドを呼び出しています。
このメソッドはページオブジェクトに存在しないため、ドライバーに渡されます。
この機能は近い将来削除される予定です。
正しいページオブジェクトメソッドを呼び出すようにコードを変更してください。

(他の場合も同じですが、この「些細な」例の方が説明しやすいはずです)

私はそれを回避する方法を探していますが、それは複雑なようです。

テストのために、私はテーブルがあるページをチェックしています。各行には行が表示されます。特定の行のチェックボックスをオンにする必要があります。

pageObjectの私のコード:

table(:comment_list, :class => 'comments')
button(:delete, :text => "Delete")

def delete_comment (text)
  self.comment_list_element.each do |row|
    if row.text.include? "#{text}"
      row.checkbox.set
      self.delete
      return true
    end
  end
  false
end

テスト中にテーブルを使用するには、テーブルの前処理が必要でしたか?

4

2 に答える 2

5

You are getting the warning because you are calling a method that is on Watir and not page-object (checkbox method on a table row). If you want to access the Checkbox you can simply call the method that will return the nested element. This would change that portion of the call to row.checkbox_element. But you next call will also get the same issue. First of all the set method does not exist on CheckBox. In page-object the methods are check and uncheck. The full call should be:

row.checkbox_element.check

The reason you are getting the deprecation error is because I plan to remove the forwarding of calls to the underlying driver in the future. This ability really causes a lot of problems in complex situations.

于 2012-09-19T00:39:11.933 に答える
1

あなたのコードでrowは、メソッドが定義されPageObject::Elements::TableRowていないです。checkboxpage-object 要素が連鎖している例は見たことがありません。

PageObject::Elements::TableRow回避策として、次のようにして を通常の に変換できますWatir::TableRow

row.element

したがって、次のようにすると、コードが機能します。

row.element.checkbox.set
于 2012-09-18T21:23:08.457 に答える