Ruby Watir - 获取NoMethodError:未安装的方法'start'在新安装的PC上

时间:2012-10-17 01:00:29

标签: ruby watir

我是Ruby的新手,所以这可能是一个非常愚蠢的问题。但我们已将此代码用于现有的Ruby安装PC。

def usr_OpenURL(strURL, strBrowserType)

    if strBrowserType == "IE"
        # Open Browser at the specified URL and Maximise
        browser = Watir::Browser.start(strURL)
        browser.waitForIE
        browser.bring_to_front
        browser.maximize
        sleep($nSleepTime)
    elsif  strBrowserType == "Chrome"

        browser = Watir::Browser.new :chrome
        browser.goto strURL
        sleep($nSleepTime)
    else
        puts "No Known Browser is Declared"
    end
    return browser

end

然而,在我的电脑上安装相同版本的Ruby并运行代码会返回错误:

undefined method 'start' for Watir::Browser:Class (NoMethodError).

所以我用irb来玩它。

如果我这样做:

require "Watir"
browser = Watir::Browser.start("http://www.google.com")

我收到错误,但如果我这样做:

require "Watir"
browser = Watir::Browser.new
browser = Watir::Browser.start("http://www.google.com")

然后好吧。它会按预期在该URL上打开一个新的浏览器窗口。

比较PC我可以看到watir的不同版本,并且安装了watir-webdriver gems - 所以不确定版本之间是否有什么变化。

写这个ruby代码的人不再在这里了 - 所以我不能问他们为什么他们没有为IE做过.new和Goto。

任何想法都将不胜感激:)谢谢!

更新: 我在watir-classic 3.2.0 gem中找到了这个。想到也许这就是罪魁祸首。

Watir ::浏览器现在是一个类而不是模块 - 如果你正在进行猴子修补,请注意。

3 个答案:

答案 0 :(得分:3)

这是watir 4.0中的一个问题。我已为此https://github.com/watir/watir/issues/5打开了一个问题 - 希望我能尽快解决这个问题:)

答案 1 :(得分:2)

据我所知Browser#start只是Browser#newBrowser#goto的快捷方式。我不知道导致错误的原因,但替换

应该是完全安全的
browser = Watir::Browser.start(strURL)

browser = Watir::Browser.new :ie
browser.goto strURL

答案 2 :(得分:2)

可能发生错误,因为新PC使用的是Watir 4.0.0,而之前的PC使用的是Watir 3.x版本。最近发布的Watir 4.0.0具有指导watir-classic gem和watir-webdriver gem之间使用的逻辑。

我相信直到你Browser.new才确定宝石。之后,加载了gem,如果它是watir-classic gem,你将拥有诸如Browser.startBrowser.attach之类的方法(因为这些在watir-webdriver中不存在)。

一种可能的解决方案,如果您只使用IE,则直接需要所需的gem。所以:

require 'watir-classic'

而不是

require 'watir'