Ruby 在Firefox上测试Watir会抛出JsshSocket::JSReferenceError

Ruby 在Firefox上测试Watir会抛出JsshSocket::JSReferenceError,ruby,firefox,integration-testing,watir,jssh,Ruby,Firefox,Integration Testing,Watir,Jssh,我在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

我在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'

这会发生在其他人身上吗?我能做些什么来修复它?

我以前从未见过这样的错误。下面是失败的代码

  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

您的错误就在这个错误处理代码中,在我看来,这太复杂了。如果这个错误处理代码更好,我们就会更好地了解到底是什么导致了您的问题。很抱歉,我帮不上什么忙。

我以前从未见过这样的错误。下面是失败的代码

  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
您的错误就在这个错误处理代码中,在我看来,这太复杂了。如果这个错误处理代码更好,我们就会更好地了解到底是什么导致了您的问题。很抱歉,我无法提供更好的帮助。

此“组件未定义”消息是一个javascript错误-它是从jssh_socket.send操作返回的

将该错误描述为间歇性的、无害的,这也是我在Mac OS X上使用Watir+Firefox时的经历(JSReferenceError时有发生,不会阻止我尝试执行的操作)

所以我所做的就是捕获异常并忽略它:

browser = Watir::Browser.new
begin
  browser.goto 'http://www.thewebsiteiwant.com/'
rescue JsshSocket::JSReferenceError
  # do nothing
end
让我的Watir程序继续。

消息“组件未定义”是一个javascript错误-它从jssh_socket.send操作返回

将该错误描述为间歇性的、无害的,这也是我在Mac OS X上使用Watir+Firefox时的经历(JSReferenceError时有发生,不会阻止我尝试执行的操作)

所以我所做的就是捕获异常并忽略它:

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

让我的Watir计划继续。

我需要更多信息。Windows、Ruby、Firefox的版本,指向您使用的jssh插件的链接,导致错误的代码。你也可以把问题发到。我需要更多的信息。Windows、Ruby、Firefox的版本,指向您使用的jssh插件的链接,导致错误的代码。您也可以将问题发布到。jssh_socket.rb(来自堆栈跟踪)的第12行是上面以“raise”开头的行。jssh_socket.rb(来自堆栈跟踪)的第12行是上面以“raise”开头的行