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 回答