1

WindowsでWatirを使用していますが、スクリプトを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'

これは他の誰かに起こりますか?それを修正するにはどうすればよいですか?

4

2 に答える 2

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

あなたのエラーはこのエラー処理コードにあり、私の目には非常に複雑です。このエラー処理コードが改善されれば、問題の真の原因をより正確に把握できます。申し訳ありませんが、これ以上お役に立てません。

于 2010-05-06T03:53:38.790 に答える
0

「コンポーネントが定義されていません」というメッセージは JavaScript エラーです — jssh_socket.send 操作から返されます。

support.mozilla.com でのこのディスカッションでは、このエラーは断続的で無害であると説明されています。これは、Mac OS X で Watir + Firefox を使用したときの私の経験でもあります (JSReferenceError が出たり消えたりして、私がしようとしている操作を妨げません)。行う)。

したがって、例外をキャプチャして無視するだけです。

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

私のWatirプログラムを続けさせてください。

于 2010-06-21T12:35:01.510 に答える