Firefox и watir не будут работать в Windows из-за того, что не найден метод единственного числа, что не так?

Я только что установил свежую копию ruby ​​1.8.7 на 32-битную версию Windows XP SP3. Установите ватир.

Я использовал пример из Википедии:

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>

person user349188    schedule 30.08.2010    source источник
comment
на всякий случай, если кто-то предложит это, я попытался понизить firewatir с 1.6.5 до 1.6.2, но это просто не сработало (я думаю, все равно стоит попробовать: p C:/Ruby187/lib/ruby/site_ruby/1.8 /rubygems.rb:779:in report_activate_error': Ru byGem version error: firewatir(1.6.2 not = 1.6.5) (Gem::LoadError) from C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems.rb:214:in activate' [бла-бла-бла...]   -  person user349188    schedule 30.08.2010
comment
я тоже пробовал это. но это не удается при попытке установить gem install watir: ОШИБКА: ошибка при установке watir: для активной поддержки требуется версия Ruby › = 1.8.7, поэтому в основном последний watir не может работать с 1.8.6, возможно, с более старым watir, тогда ...   -  person user349188    schedule 31.08.2010
comment
пробовал с watir 1.6.2, 1.5.6, 1.5.5 ==› каждый требовал ruby ​​1.8.7 наконец watir 1.5.4 устанавливает но теперь скрипт больше не работает даже с ie :( неинициализированная константа Watir::Exception возможно это в связи с тем, что Watir::IE стал Watir::Browser в какой-то момент в прошлом, я чувствую усталость :(   -  person user349188    schedule 31.08.2010
comment
если вы требуете «active_support», вы можете сделать .singularize?   -  person rogerdpack    schedule 02.09.2010


Ответы (3)


Статья в Википедии не поддерживается командой Watir, поэтому она, вероятно, не актуальна. Используйте только примеры с watir.com.

Я просмотрел статью в Википедии и нигде не смог найти require 'watir/ie', пожалуйста, используйте только require 'watir'.

Я установил Ruby 1.8.7-p302 с rubyinstaller.org/downloads на полностью пропатченной 32-битной машине XP SP3 и установил Watir с gem install watir.

Я установил Firefox 3.6.8 и Подключаемый модуль Windows для Firefox 3.6 из watir.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

Действительно странно. Раньше это работало.

Если вы хотите управлять Firefox с Watir, я бы посоветовал watir-webdriver gem, пока это не будет исправлено.

person Željko Filipin    schedule 31.08.2010
comment
ммм, интересно, я пробовал с require rubygems require watir-webdriver browser = Watir::Browser.new(:firefox) browser.goto(google .com), а также требуют rubygems требуют watir-webdriver browser = Watir::Browser.new(:ie) browser.goto(google.com) в обоих случаях я получаю watir3.rb:3: неинициализированная константа Watir (NameError) wtf ??? - person user349188; 31.08.2010
comment
Я только что попробовал ваш код, и он работает на моей машине. Действительно странно. Удалите Ruby и попробуйте установить его только с watir-webdriver. Не уверен, что это поможет, но попробовать можно. - person Željko Filipin; 01.09.2010

Просто сделайте require 'active_support' где-нибудь в своем коде. Похоже, ребята не указали active_support в качестве зависимости. добавьте сюда разглагольствования

person Reactormonk    schedule 31.08.2010
comment
не работал. я пробовал сразу после запроса «rubygems», в неисправном файле firewatir, я пробовал внутри модуля, вне сайта, в обратном порядке или «rubygems» и «active_support», ничего из этого не сработало :'( - person user349188; 31.08.2010
comment
Отчет об ошибках был бы полезен. И rubygems должен быть первым. - person Reactormonk; 01.09.2010
comment
в основном сообщаемая ошибка такая же: неопределенный метод `singularize' - person user349188; 01.09.2010

у меня работает с 1.8.6 (mingw) + active_support 2.3.8 + watir (хотя я получаю сообщение «пожалуйста, установите jssh», когда использую его с firefox).

Моя первая догадка заключается в том, что у вас конфликт между драгоценными камнями, а rubygems "всегда выбирает первое".

Вы можете установить гем gem_conflict_checker (который включает плагин rubygems для его проверки). Установите его, затем установите гем watir, и он должен сообщить вам о существующем конфликте.

В ответ на ваш первоначальный вопрос, вот единственное число: http://blog.jayfields.com/2007/11/stringsingularize.html

-r

person rogerdpack    schedule 31.08.2010
comment
почему у меня конфликт драгоценных камней? я использовал fersh полностью чистые окна (никогда раньше не видел ни одного бинарного файла ruby), установил свежую версию 1.8.7 с помощью установщика в один клик (последний на вчерашний день или около того), затем выпустил обновление драгоценного камня (нечего обновлять), затем драгоценный камень установить watir. и я могу серьезно получить конфликт драгоценных камней с этим? (извините, если вопрос покажется грубым...) постараюсь как можно скорее использовать gem_conflict_checker - person user349188; 31.08.2010