Тестирование Watir на Firefox вызывает JsshSocket :: JSReferenceError - PullRequest
1 голос
/ 04 апреля 2010

Я использую Watir в Windows, и когда мой скрипт пытается запустить Firefox, я вижу эту ошибку на консоли:

JsshSocket::JSReferenceError:  Components is not definedReferenceError: Components is not defined
    C:/xampp/Ruby/lib/ruby/gems/1.8/gems/firewatir-1.6.5/lib/firewatir/jssh_socket.rb:12:in `js_eval'
    C:/xampp/Ruby/lib/ruby/gems/1.8/gems/firewatir-1.6.5/lib/firewatir/firefox.rb:195:in `goto'
    C:/xampp/Ruby/lib/ruby/gems/1.8/gems/firewatir-1.6.5/lib/firewatir/firefox.rb:164:in `start'
    C:/xampp/Ruby/lib/ruby/gems/1.8/gems/commonwatir-1.6.5/lib/watir/browser.rb:71:in `start'
    ./test.rb:12:in `test_prepare'

Это случается с кем-то еще? Что я могу сделать, чтобы это исправить?

Ответы [ 2 ]

1 голос
/ 06 мая 2010

Я не видел подобной ошибки раньше.Вот код, который не работает.

  def js_eval(str)
    str.gsub!("\n", "")
    jssh_socket.send("#{str};\n", 0)
    value = read_socket()
    if md = /^(\w+)Error:(.*)$/.match(value)
      errclassname="JS#{md[1]}Error"
      unless JsshSocket.const_defined?(errclassname)
        JsshSocket.const_set(errclassname, Class.new(StandardError))
      end
      raise JsshSocket.const_get(errclassname), md[2]
    end
    value
  end

Ваша ошибка в этом коде обработки ошибок, который, на мой взгляд, слишком сложен.Если бы этот код обработки ошибок был лучше, у нас было бы лучшее представление о том, что действительно вызывает вашу проблему.Извините, я не могу помочь вам лучше.

0 голосов
/ 21 июня 2010

Сообщение «Компоненты не определены» является ошибкой javascript - оно возвращается из операции jssh_socket.send.

В этом обсуждении на support.mozilla.com описывается ошибка как периодическая и безвредная, что также было моим опытом при использовании Watir + Firefox в Mac OS X (JSReferenceError приходит и уходит, а не предотвратить операции, которые я пытаюсь сделать).

Итак, все, что я делаю, это фиксирую исключение и игнорирую его:

browser = Watir::Browser.new
begin
  browser.goto 'http://www.thewebsiteiwant.com/'
rescue JsshSocket::JSReferenceError
  # do nothing
end

и пусть моя программа Watir продолжится.

...