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をPCにインストールしてコードを実行すると、エラーが返されます。

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がインストールされているので、バージョン間で何かが変更されたかどうかはわかりません。

このルビーコードを書いた人はもうここにいないので、なぜ彼らが.newとGotoforIEをやっていないのか尋ねることはできません。

任意のアイデアをいただければ幸いです:)ありがとう!

更新:これはwatir-classic3.2.0gemで見つかりました。多分それが原因だと思います。

Watir :: Browserは、モジュールではなくクラスになりました。モンキーパッチを適用している場合は注意してください。

4

3 に答える 3

3

これはwatir4.0の問題です。私はそのhttps://github.com/watir/watir/issues/5の問題を公開しました-うまくいけば、すぐに修正します:)

于 2012-10-20T14:09:49.870 に答える
2

私の知る限り、とのBrowser#startショートカットにすぎません。エラーの原因はわかりませんが、完全に安全に交換できます。Browser#newBrowser#goto

browser = Watir::Browser.start(strURL)

browser = Watir::Browser.new :ie
browser.goto strURL
于 2012-10-17T07:35:32.463 に答える
2

新しいPCがWatir4.0.0を使用しているのに対し、以前のPCはWatir 3.xバージョンを使用していたため、エラーが発生している可能性があります。最近リリースされたWatir4.0.0には、watir-classicgemとwatir-webdrivergemの間で使用を指示するためのロジックがあります。

私はあなたがするまで宝石は決定されないと信じていますBrowser.new。その後、gemがロードされ、それがwatir-classic gemである場合は、Browser.startandなどのメソッドが使用されBrowser.attachます(これらはwatir-webdriverには存在しないため)。

IEのみを使用している場合に考えられる解決策は、必要なgemを直接要求することです。そうしてください:

require 'watir-classic'

それ以外の

require 'watir'
于 2012-10-17T13:19:03.503 に答える