В чем заключается ошибка в Ruby Watir (WIN32OLERuntimeError: неизвестное свойство или метод `document ')? - PullRequest
2 голосов
/ 19 мая 2011

У меня есть этот код в Ruby waitr ..

$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

при запуске этого кода получаются результаты этой ошибки ...

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'

Ответы [ 2 ]

4 голосов
/ 19 мая 2011

Вы используете Watir 1.5.3, но текущая стабильная версия 1.8.1 .Я предлагаю вам обновить ваш драгоценный камень до последней версии и попробовать еще раз.Есть большая вероятность, что объект WIN32OLE для IE изменил свое поведение, и старый гем конфликтовал с ним.(Вы обновили IE или что-то со времени последнего успешного запуска?)

0 голосов
/ 07 июня 2011

Я получил ту же ошибку, используя Watir 1.8.1. Я не знаю, есть ли что-то не так с вашим кодом, но в моем случае тесты работали нормально на других машинах.

Я запускаю свои тесты в RubyMine 3.1.x. Запуск RubyMine в качестве администратора позволил Ruby иметь права для правильного взаимодействия с IE, и проблема исчезла.

Edit: Нашел сообщение на форуме , которое изначально помогло мне решить проблему.

...