我得到未定义的方法';当你在场时';在ruby脚本中,但它在irb中工作

我得到未定义的方法';当你在场时';在ruby脚本中,但它在irb中工作,ruby,watir,Ruby,Watir,我使用的是watir 4.0.2和ruby 2.0.0: 准确的脚本: require 'rubygems' require 'watir' @@ie = Watir::Browser.new @@ie.goto("http://www.google.com") @@ie.text_field(:name, 'q').when_present.set("bottlecaps") 确切错误消息: google_script.rb:8: undefined method 'when_present

我使用的是watir 4.0.2和ruby 2.0.0:

准确的脚本:

require 'rubygems'
require 'watir'
@@ie = Watir::Browser.new
@@ie.goto("http://www.google.com")
@@ie.text_field(:name, 'q').when_present.set("bottlecaps")
确切错误消息:

google_script.rb:8: undefined method 'when_present' for #<Watir::TextField:0x31eec60 located=false how=:name what="q"> <NoMethodError>
google_script.rb:8:when_present的未定义方法
当我在脚本中执行此操作时,会收到错误消息,但当我在IRB中执行此操作时,它的行为与我预期的一样。
这个网站上提出的类似问题已经通过使用权限做一些事情得到了回答,但我不认为这在这种情况下适用。

如评论中所述,问题是脚本加载的是较旧版本的watir gem(v1.6.5),而IRB加载的是最新版本的watir gem(v4.0.2)

可以通过以下方式查看加载的gem:

puts Gem.loaded_specs["watir"].version

解决方案是卸载所有的gems,只重新安装当前的gems。

给出错误堆栈。这不是一个真正的错误堆栈,至少我不知道如何查看。这是运行我的脚本的输出:google_script.rb:8:undefined method'when_present'for#我运行代码时没有发现任何问题。。你有哪一个ruby版本?我的ruby版本是1.9.3P327对我来说它正在工作。。。我不知道发生了什么。。