1

最後にテーブルをチェックしたときからテーブルに追加された新しいイベントのみを取得するはずの次のコードがあります。

events=@browser.table( :id =>'table_events').tbody.rows
....
some code
....
events_new=@browser.table( :id =>'table_events').tbody.rows
events=events_new - events # not working !! 

次のエラーが発生します:

undefined method `-' for #<Watir::TableRowCollection:0x007fccb9ba2358> (NoMethodError)

もちろん、「-」述語が間違っていることは理解していますが、必要なことを行う方法や、すべての TableRowCollection を調べて新しい行を手動で見つける必要がある方法はありますか?

4

1 に答える 1

2

TableRowCollectionを、減算をサポートする配列に変換してみることができます。

events = events_new.to_a - events.to_a

要素に便利な==メソッドが定義されていれば、それは機能します

訂正: 実際には、配列の減算は効率のためにハッシュ テーブルを使用して実装されているため (気になる方はこちらのソースTableRow#==を参照してください)、重要なのはメソッドではなくTableRow#hashメソッドです。幸いなことに、Watirもそれを実装しているようです。

于 2013-01-22T10:34:22.917 に答える