由于没有找到单一的方法,firefox和watir无法在Windows上运行,出了什么问题?

时间:2010-08-30 16:50:00

标签: ruby watir firewatir

我刚刚在Windows XP SP3 32位上安装了ruby 1.8.7的全新副本。 安装watir。

我使用维基百科示例:

require 'rubygems'

require 'watir/ie' 
Watir::Browser.default = 'ie'

b = Watir::Browser.new 
b.goto("http://www.google.com")

到目前为止一切顺利,按预期工作

现在

require 'rubygems'

require 'watir/ie' 
Watir::Browser.default = 'firefox'

b = Watir::Browser.new 
b.goto("http://www.google.com")

引发丑陋的

C:\Documents and Settings\Administrator\Desktop>ruby watir2.rb
C:/Ruby187/lib/ruby/gems/1.8/gems/commonwatir-1.6.5/lib/watir/browser.rb:89:in `
klass': undefined method `singularize' for "Buttons":String (NoMethodError)
        from C:/Ruby187/lib/ruby/gems/1.8/gems/firewatir-1.6.5/lib/firewatir/ele
ment_collections.rb:185
        from C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`gem_original_require'
        from C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`require'
        from C:/Ruby187/lib/ruby/gems/1.8/gems/firewatir-1.6.5/lib/firewatir.rb:
29
        from (eval):1:in `klass'
        from C:/Ruby187/lib/ruby/gems/1.8/gems/commonwatir-1.6.5/lib/watir/brows
er.rb:65:in `eval'
        from C:/Ruby187/lib/ruby/gems/1.8/gems/commonwatir-1.6.5/lib/watir/brows
er.rb:89:in `klass'
        from C:/Ruby187/lib/ruby/gems/1.8/gems/commonwatir-1.6.5/lib/watir/brows
er.rb:65:in `new'
        from watir2.rb:7

应该提到我已经按照那里记录的程序http://watir.com/installation/#win 此外,我认为这是无关的,但我确实按预期安装了jssh firefox插件。

这个未定义的方法`singularize'代表什么?

下面是一些环境信息

C:\Documents and Settings\Administrator\Desktop>gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.8.7 (2010-08-16 patchlevel 302) [i386-mingw32]
  - INSTALLATION DIRECTORY: C:/Ruby187/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: C:/Ruby187/bin/ruby.exe
  - EXECUTABLE DIRECTORY: C:/Ruby187/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-mingw32
  - GEM PATHS:
     - C:/Ruby187/lib/ruby/gems/1.8
     - C:/Documents and Settings/Administrator/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

C:\Documents and Settings\Administrator\Desktop>gem list

*** LOCAL GEMS ***

activesupport (3.0.0)
builder (2.1.2)
commonwatir (1.6.5)
firewatir (1.6.5)
hoe (2.6.1)
json_pure (1.4.6)
nokogiri (1.4.3.1 x86-mingw32)
rake (0.8.7)
rubyforge (2.0.4)
s4t-utils (1.0.4)
user-choices (1.1.6.1)
watir (1.6.5)
win32-api (1.4.6 x86-mingw32)
win32-process (0.6.2)
windows-api (0.4.0)
windows-pr (1.0.9)
xml-simple (1.0.12)

C:\Documents and Settings\Administrator\Desktop>

3 个答案:

答案 0 :(得分:0)

Watir团队不维护

Wikipedia article,因此它可能不是最新的。请仅使用watir.com中的示例。

我查看了维基百科的文章,我在任何地方找不到require 'watir/ie',请只使用require 'watir'

我已在完全修补的XP SP3 32位计算机上安装了来自1.8.7-p302的Ruby rubyinstaller.org/downloads,并使用gem install watir安装了Watir。

我已经从Firefox 3.6.8安装了Windows plugin for Firefox 3.6watir.com/installation

我已经执行了watir.com/examples

的代码
require "rubygems"    
require "watir"
Watir::Browser.default = "firefox"
Watir::Browser.new

但我得到了

NoMethodError: undefined method `demodulize' for "FireWatir::Pre":String
        from C:/Ruby/lib/ruby/gems/1.8/gems/commonwatir-1.6.5/lib/watir/browser.rb:89:in `klass'
        from C:/Ruby/lib/ruby/gems/1.8/gems/firewatir-1.6.5/lib/firewatir/elements/non_control_elements.rb:2
        from C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from C:/Ruby/lib/ruby/gems/1.8/gems/firewatir-1.6.5/lib/firewatir.rb:15
        from (eval):1:in `klass'
        from C:/Ruby/lib/ruby/gems/1.8/gems/commonwatir-1.6.5/lib/watir/browser.rb:65:in `eval'
        from C:/Ruby/lib/ruby/gems/1.8/gems/commonwatir-1.6.5/lib/watir/browser.rb:89:in `klass'
        from C:/Ruby/lib/ruby/gems/1.8/gems/commonwatir-1.6.5/lib/watir/browser.rb:65:in `new'
        from (irb):4

真奇怪。过去曾经工作过。

如果你想用Watir驱动Firefox,我会建议watir-webdriver gem直到修复它。

答案 1 :(得分:0)

只需在代码中的某处执行require 'active_support'即可。看起来这些人没有将active_support指定为依赖项。 在这里添加咆哮

答案 2 :(得分:0)

适用于1.8.6(mingw)+ active_support 2.3.8 + watir(虽然我在使用firefox时收到“请安装jssh”消息)。

我的第一个预感是你在宝石之间存在一些冲突,并且rubygems“总是选择第一个”

您可以安装gem_conflict_checker gem(其中包含一个rubygems插件来测试相同的内容)。安装它然后安装watir gem它应该告诉你现有的冲突。

在回答您原来的问题时,请点击这里:http://blog.jayfields.com/2007/11/stringsingularize.html

-r