1 votes

Tester Watir sur Firefox provoque une erreur JsshSocket::JSReferenceError.

J'utilise Watir sur Windows et lorsque mon script essaie de s'exécuter sur Firefox, je vois cette erreur sur ma console :

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'

Cela arrive-t-il à quelqu'un d'autre ? Que puis-je faire pour le réparer ?

1voto

Bret Pettichord Points 435

Je n'ai jamais vu une telle erreur auparavant. Voici le code qui échoue.

  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

Votre erreur se situe dans ce code de gestion des erreurs, qui à mes yeux est trop compliqué. Si ce code de gestion des erreurs était meilleur, nous aurions une meilleure idée de ce qui cause réellement votre problème. Désolé de ne pas être d'une meilleure aide.

0voto

2801001 Points 133

Le message "Components is not defined" est une erreur javascript - il provient de l'opération jssh_socket.send.

Cette discussion à support.mozilla.com décrit l'erreur comme intermittente et inoffensive, ce qui a été mon expérience aussi en utilisant Watir + Firefox sur Mac OS X (le JSReferenceError va et vient, et n'empêche pas les opérations que j'essaie de faire).

Donc tout ce que je fais est de capturer l'exception, et de l'ignorer :

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

et laisser mon programme Watir continuer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X