今天我安装了Ruby 1.9.2p180 (2011-02-18) [i386-mingw32]
,我遇到了以下问题。与Ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]
一起正常工作。我在很多论坛上搜索过,但仍无法找到灵魂。请帮忙!
使用以下代码点击按钮时收到错误Undefined method 'each' for :ole_object:Symbol (NoMethodError)
。
ie.frame(:id,"body").table(:id,"recordListButton_UserList_ctl00")[1][2].click_no_wait
这在ruby 1.8.6中运行良好。
错误:
C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-2.0.4/lib/watir/locator.rb:11:in `normalize_specifiers!': undefined method `each'
for :ole_object:Symbol (NoMethodError)
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-2.0.4/lib/watir/locator.rb:43:in `set_specifier'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-2.0.4/lib/watir/container.rb:109:in `tagged_element_locator'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-2.0.4/lib/watir/element.rb:36:in `locate'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-2.0.4/lib/watir/table.rb:249:in `locate'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-2.0.4/lib/watir/element.rb:75:in `assert_exists'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-2.0.4/lib/watir/table.rb:285:in `[]'
from //coldstorage/intranet/QA/Automation/Clickability for Blank DB- New Look and Feel/Admin Tab/Click_User_page_CC.rb:75:in `<main>'
>Exit code: 0
注意:当我尝试
时ie.frame(:id,"body").table(:id,"recordListButton_UserList_ctl00").click_no_wait
在Watir 1.9.2中它正在运作。我不明白为什么
table(:id,"recordListButton_UserList_ctl00")[1][2]
导致错误。并且错误是抱怨我在脚本中没有使用的方法'each'。请帮忙!
我的机器上安装了以下宝石:
activesupport (2.3.9)
builder (3.0.0)
commonwatir (2.0.4, 2.0.3, 1.7.1, 1.6.7)
ffi (1.0.9 x86-mingw32)
firewatir (1.7.1, 1.6.7)
hoe (2.12.3)
minitest (1.6.0)
nokogiri (1.5.0 x86-mingw32)
rake (0.8.7)
rautomation (0.6.3)
rdoc (2.5.8)
s4t-utils (1.0.4)
user-choices (1.1.6.1)
watir (2.0.4)
win32-api (1.4.8 x86-mingw32)
win32-process (0.6.5)
windows-api (0.4.0)
windows-pr (1.2.1)
xml-simple (1.1.1)
答案 0 :(得分:0)
我上面看到的错误似乎表明你不仅升级了Ruby,还升级了Watir,因为我看到 2.0.4 作为watir文件路径的一部分。
watir 1.x和watir 2.x之间的一个主要变化是从一个基于零的索引转移到基于零的索引。
您是否修改了代码中的索引值,或者将以下内容添加到脚本的顶部以使用旧的基于索引的索引?
require "watir"; Watir.options[:zero_based_indexing] = false
可能是错误是尝试发送watir照看一个根本不存在的元素的结果。例如表格的一行上的第三个单元格,只有两列。
如果您点击的链接是表格中的第一个链接,这可能会解释为什么仅使用.link
(与.link(:index => 0)
相同)工作正常,但尝试解决该项目按行和单元格不是。
答案 1 :(得分:0)
这听起来像票WTR-459(click_no_wait不适用于帧)。但是,据我所知,该票是固定的。