2011-05-19 37 views
2

我在Ruby中waitr這個代碼..什麼是Ruby Watir錯誤(WIN32OLERuntimeError:未知屬性或方法`文檔')?

$LOAD_PATH.unshift File.join(File.dirname(__FILE__),'..') if $0 == __FILE__ 
require 'test/unit' 
require 'Watir' 
require 'Watir/contrib/enabled_popup' 

class TC_Dialog_Test<Test::Unit::TestCase 
    $ie=Watir::IE.new 
    $ie.bring_to_front() 
    $myDir = File.expand_path(File.dirname(__FILE__)) 

    def setup 
    $ie.goto "file://#{$myDir}/aa.html" 
    end 
    def test_confirm_OK 
    sleep(3) 
    $ie.button(:id, 'btnConfirm').click_no_wait 
    $hwnd = $ie.enable_popup(5) 
    if ($hwnd) 
     $popup =WinClicker.new 
     $popup.makeWindowsActive($hwnd) 
     sleep(3) 
    # $popup.clickWindowsButton($hwnd,"OK") 
     puts "you pressed Comfirm-ok" 
     sleep(3) 
    end 
    end 
    end 
runnung這個代碼得到這個錯誤結果時

...

test_confirm_OK(TC_Dialog_Test): 
WIN32OLERuntimeError: unknown property or method `document' 
    HRESULT error code:0x800706b5 
     The interface is unknown. 
    c:/ruby/lib/ruby/gems/1.8/gems/watir-1.5.3/./watir/ie.rb:417:in `method_missing' 
    c:/ruby/lib/ruby/gems/1.8/gems/watir-1.5.3/./watir/ie.rb:417:in `document' 
    c:/ruby/lib/ruby/gems/1.8/gems/watir-1.5.3/./watir/container.rb:767:in `ole_inner_elements' 
    c:/ruby/lib/ruby/gems/1.8/gems/watir-1.5.3/./watir/container.rb:838:in `locate_input_element' 
    c:/ruby/lib/ruby/gems/1.8/gems/watir-1.5.3/./watir/input_elements.rb:10:in `locate' 
    c:/ruby/lib/ruby/gems/1.8/gems/watir-1.5.3/./watir/element.rb:47:in `assert_exists' 
    c:/ruby/lib/ruby/gems/1.8/gems/watir-1.5.3/./watir/element.rb:278:in `enabled?' 
    c:/ruby/lib/ruby/gems/1.8/gems/watir-1.5.3/./watir/element.rb:53:in `assert_enabled' 
    c:/ruby/lib/ruby/gems/1.8/gems/watir-1.5.3/./watir/element.rb:214:in `click_no_wait' 
    Mo.rb:16:in `test_confirm_OK' 
+0

而且?你希望我們調試你的代碼?如果我是你,我會盡量發佈導致錯誤的最少量的代碼。我也會發布相關的HTML頁面。 – 2011-05-19 08:10:46

+0

@Zeljko:那是我最初的反應,但除非我誤解了代碼,在錯誤發生之前只有六行代碼被執行,並且你不能真正刪除它們中的任何一個。 – 2011-05-19 23:18:01

+0

@Andrew:這只是表明他或她沒有付出任何努力來提問。我會花同樣的努力來回答。 – 2011-05-20 08:46:52

回答

4

您正在使用的Watir 1.5.3,但目前的穩定是1.8.1 。我建議你更新你的寶石到最新的,然後再試一次。很有可能IE的WIN32OLE對象改變了它的行爲,舊的寶石與它衝突。 (你上次成功運行後是否更新了IE或者smth?)

0

我用Watir 1.8.1得到了同樣的錯誤。我不知道你的代碼是否有問題,但在我的情況下,測試在其他機器上運行良好。

我在RubyMine 3.1.x中運行我的測試。以管理員身份運行RubyMine允許Ruby有權與IE正確交互,並且問題消失。

編輯: 找到原來幫我解決問題的forum post

相關問題