2011-11-09 24 views
1

今天我安裝Ruby 1.9.2p180 (2011-02-18) [i386-mingw32]和我有以下問題是工作的罰款與Ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]我搜索在許多論壇和仍然無法找到一個soultion請幫「未定義的方法`每個」爲:ole_object:符號

。!使用下面的代碼點擊按鈕時

我收到錯誤Undefined method 'each' for :ole_object:Symbol (NoMethodError)

ie.frame(:id,"body").table(:id,"recordListButton_UserList_ctl00")[1][2].click_no_wait 

這在紅寶石工作正常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] 

導致錯誤。而錯誤是抱怨方法'每個',我沒有在腳本中的任何地方使用。請幫忙!

我有我的機器上安裝了以下的寶石:

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

我看到上面的錯誤似乎表明您升級不僅紅寶石,但的Watir,以及因爲我看到2.0.4作爲的一部分watir文件的路徑。

watir 1.x和watir 2.x之間的主要變化之一是從一個基礎到基於零的索引。

您是否修改了代碼中的索引值,或將以下內容添加到腳本的頂部以使用舊的基於索引的索引?

require "watir"; Watir.options[:zero_based_indexing] = false 

這可能是該錯誤是試圖發送watir照顧一個根本不存在的元素的結果。在只有兩列的表格的一行上的第三個單元格。

如果您點擊鏈接是在表中的第一個,爲什麼只用.link(這是一樣的.link(:index => 0))這或許可以解釋工作正常,但試圖通過行和單元格,以解決該項目不在。

+0

你們真棒。這是索引問題。當我嘗試表(:id,「recordListButton_UserList_ctl00」)[0] [1]它正在工作。我也仔細檢查了它與我的應用程序中的其他地方。當我將索引減一時,我的腳本正在工作。但我無法得到「Watir.options [:zero_based_indexing] = false」的工作。我是否需要做更多的工作來實現這個目標?我將這行代碼包含在腳本的頂部,但無法識別「table(:id,」recordListButton_UserList_ctl00「)[1] [2] .click」。如果我能做到這一點,這將是非常棒的。謝謝! – sridhar249

+0

我在這個網站(http://watir.com/2011/08/11/watir-2-0/)發現選項「Watir.options [:zero_based_indexing] = false」將在未來被刪除。它是否已被刪除?如果是的話,我會開始在我的垃圾郵件中進行索引更改。謝謝! – sridhar249

+1

個人而言,我會進行更改,因爲那時你有更大的能力,可能能夠在Watir-Webdriver下運行這些腳本來測試FireFox和Chrome –

0

這聽起來像票WTR-459(click_no_wait不適用於框架)。但是,據我所知,這張票是固定的。

相關問題