2013-04-08 37 views
4

我已經安裝了Ruby 2,devkit & Watir。運行簡單的watir腳本時出錯:未初始化的常量Watir :: IE(NameError)

  • 環境:操作系統WIN7(64位)
  • 安裝文件:
    • ruby​​installer-2.0.0-P0-x64.exe程序
    • 的devkit-mingw64-64-4.7.2-20130224- 1432-sfx.exe
  • 的寶石列表結果部分:
    • commmonwatir 4.0.0
    • 的Watir 4.0.0
    • Win32的過程0.6.6

當我運行一個簡單的腳本:

require 'rubygems' 
require 'watir' 
require 'watir-webdriver' 
ie = Watir::IE.new 
ie.goto("http://www.google.com") 

我收到以下錯誤:

uninitialized constant Watir::IE (NameError) 

然後我試了ie = Watir::Browser.new代替ie = Watir::IE.new 仍然得到錯誤:

cannot load such file watir-classic (loaderror) 

然後我嘗試安裝的Watir經典,再次收到錯誤:

extconf.rb 
libxml2 is missing 

任何人都可以請幫我解決這個問題?

+0

一般來說,要麼需要'watir''或'需要'watir-webdriver''但不能同時使用。使用其中一個或另一個進行測試。 watir =經典IE只有watir。 watir-webdriver =基於webdriver的跨瀏覽器支持watir – 2013-04-09 16:47:03

+1

@ChuckvanderLinden,'require'watir''不再只是傳統的IE瀏覽器。 Watir現在是一個可以加載watir-classic或watir-webdriver的元語言,具體取決於您要使用的瀏覽器。 – 2013-04-10 03:55:37

+1

所以,如果你使用'require'watir'',你還需要'需要'watir-webdriver'嗎? – 2013-04-10 17:30:06

回答

4

基礎上錯誤,我的猜測是watir-classic無法安裝nokogiri寶石。 Nokogiri目前不支持Windows上的Ruby x64 - 請參閱https://github.com/sparklemotion/nokogiri/issues/864

兩件事情,你可以嘗試:

  1. 使用32位紅寶石(如引入nokogiri問題的建議)

  2. 使用IE以外的瀏覽器。默認情況下,Browser.new將使用watir-classic啓動IE。使用其他瀏覽器之一將使用watir-webdriver,我不相信這是依賴於nokogiri。

例子:

require 'watir' 
browser = Watir::Browser.new :chrome 
browser.goto("http://www.google.com") 
+0

非常感謝。我已閱讀https://github.com/sparklemotion/nokogiri/issues/864。 – user2256777 2013-04-09 08:07:13

+0

我用了32位Ruby,我的問題解決了。再次感謝你。第二個建議似乎也起作用,但需要爲特定瀏覽器安裝其他東西。 – user2256777 2013-04-09 08:10:16

+0

總比不接受,這是很多新用戶似乎做的。 ;-) – 2013-04-15 15:54:06

3

您沒有安裝watir-webdriver(或至少在您的gem列表結果中列出)。

gem install watir-webdriver 

腳本:

require 'watir-webdriver' 
ie = Watir::Browser.new :ie 
ie.goto("http://www.google.com") 

來源:http://watirwebdriver.com

如果你喜歡的Watir經典,你可以找到安裝和快速啓動的信息在這裏:https://github.com/watir/watir-classic

+0

非常感謝您的幫助。 – user2256777 2013-04-09 04:32:19

+1

我確實安裝了watir-webdriver。我採取了Justin Ko的建議並使用了32位Ruby。問題被解決了。不管怎樣,謝謝你。 – user2256777 2013-04-09 08:06:02

+0

您顯示的'gem list'結果部分沒有列出'watir-webdriver',這讓我們覺得該寶石沒有安裝。 – 2013-04-10 17:32:05

0

在代碼中刪除需要 '的Watir-webdriver的',添加需要 '的Watir經典'。所以,你的代碼應該如下:

require 'rubygems' 
require 'watir' 
require 'watir-classic' 
ie = Watir::IE.new 
ie.goto("http://www.google.com") 

警告通知:的Watir :: IE常數已被棄用,使用的Watir ::瀏覽器,而不是 在這種情況下沒有必要要求「的Watir經典」。下面的代碼應該可以工作:

require 'rubygems' 
require 'watir' 
#require 'watir-classic' 
#ie = Watir::IE.new 
ie = Watir::Browser.new 
ie.goto("http://www.google.com") 
相關問題