1

我是 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 gem - 所以不确定版本之间是否有变化。

写这个 ruby​​ 代码的人已经不在了——所以我不能问他们为什么不为 IE 做一个 .new 和 Goto。

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

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

Watir::Browser 现在是一个类而不是一个模块 - 如果你正在修补猴子,请小心。

4

3 回答 3

3

这是 watir 4.0 中的一个问题。我已经为该https://github.com/watir/watir/issues/5打开了一个问题- 希望我会尽快修复它:)

于 2012-10-20T14:09:49.870 回答
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.start和之类的方法Browser.attach(因为这些方法在 watir-webdriver 中不存在)。

如果您只使用 IE,一个可能的解决方案是直接需要所需的 gem。这样做:

require 'watir-classic'

代替

require 'watir'
于 2012-10-17T13:19:03.503 回答
2

据我所知Browser#start,这只是Browser#newand的捷径Browser#goto。我不知道是什么导致了错误,但更换它应该是完全安全的

browser = Watir::Browser.start(strURL)

browser = Watir::Browser.new :ie
browser.goto strURL
于 2012-10-17T07:35:32.463 回答