2010-04-04 3 views
1

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

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' 

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

+0

Мне нужна дополнительная информация. Версии Windows, Ruby, Firefox, ссылка на плагин jssh, который вы используете, код, который вызывает ошибку. Вы можете отправить этот вопрос в http://groups.google.com/group/watir-general. –

ответ

1

Я еще не видел такую ​​ошибку. Вот код, который терпит неудачу.

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

Строка 12 jssh_socket.rb (из вашей трассировки стека) - это строка, начинающаяся с «рейза», –

0

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

This discussion at 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 продолжить.

Смежные вопросы