Gem Watir-webdriver 在不同作業系統時會報錯.

emmetyu · 2012年10月11日 · 最后由 emmetyu 回复于 2012年10月11日 · 3787 次阅读

想請教各位先進一個在使用 Watir-webdriver 時會遇到的問題

環境如下:Mac 10.7.5 與 Ubuntu 12.04 Ruby 版本 : 1.9.2-p320 安裝 Ruby 方式:皆同樣是採 RVM 安裝,且獨立用 gemset


安裝的 gem :

addressable (2.3.2) bundler (1.2.1) childprocess (0.3.5) ffi (1.1.5) headless (0.3.1) libwebsocket (0.1.5) multi_json (1.3.6) nokogiri (1.5.5) rake (0.9.2.2) rb-readline (0.4.2) rubygems-bundler (1.1.0) rubyzip (0.9.9) rvm (1.11.3.5) selenium-webdriver (2.25.0) watir-webdriver (0.6.1)


code 都按照http://watirwebdriver.com/ 所述

require 'watir-webdriver' b = Watir::Browser.new b.goto 'bit.ly/watir-webdriver-demo' b.text_field(:id => 'entry_0').set 'your name' b.select_list(:id => 'entry_1').select 'Ruby' b.select_list(:id => 'entry_1').selected? 'Ruby' b.button(:name => 'submit').click b.text.include? 'Thank you'


但是在 Mac 下就可以正常開啟 Firefox, 但在 Ubuntu 12.04 就會報錯

錯誤訊息如下:

/home/user/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/uri/common.rb:126:in split': bad URI(absolute but no path): http:// (URI::InvalidURIError) from /home/user/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/uri/common.rb:174:inparse' from /home/user/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/uri/common.rb:628:in parse' from /home/user/.rvm/gems/ruby-1.9.2-p320@watir/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:91:innew_http_client' from /home/user/.rvm/gems/ruby-1.9.2-p320@watir/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:16:in http' from /home/user/.rvm/gems/ruby-1.9.2-p320@watir/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:82:inresponse_for' from /home/user/.rvm/gems/ruby-1.9.2-p320@watir/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:38:in request' from /home/user/.rvm/gems/ruby-1.9.2-p320@watir/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/common.rb:40:incall' from /home/user/.rvm/gems/ruby-1.9.2-p320@watir/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:598:in raw_execute' from /home/user/.rvm/gems/ruby-1.9.2-p320@watir/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:92:increate_session' from /home/user/.rvm/gems/ruby-1.9.2-p320@watir/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:68:in initialize' from /home/user/.rvm/gems/ruby-1.9.2-p320@watir/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/firefox/bridge.rb:32:ininitialize' from /home/user/.rvm/gems/ruby-1.9.2-p320@watir/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/common/driver.rb:31:in new' from /home/user/.rvm/gems/ruby-1.9.2-p320@watir/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/common/driver.rb:31:infor' from /home/user/.rvm/gems/ruby-1.9.2-p320@watir/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver.rb:65:in for' from /home/user/.rvm/gems/ruby-1.9.2-p320@watir/gems/watir-webdriver-0.6.1/lib/watir-webdriver/browser.rb:35:ininitialize' from test.rb:7:in new' from test.rb:7:in'


基本上在 b = Watir::Browser.new , 這一行執行時就會產生錯誤, 但同樣的 code 在 Mac 就沒有什麼問題,甚至在 WIndows 也沒有什麼問題, 所以想請教各位先進是否有什麼解決的方法,感謝

b.goto 'bit.ly/watir-webdriver-demo' 改成 b.goto 'http://bit.ly/watir-webdriver-demo' 试试看

回覆@cxh116 , 也是一樣的錯誤,它會開啟 Firefox, 但是網址列都會空白,也就是'http://bit.ly/watir-webdriver-demo' 或 'bit.ly/watir-webdriver-demo' 都不會把值傳到 firefox 的網址列。

我在 Ubuntu 下使用正常,根据你的描述,建议你升级 Ruby1.9.3-p194 上再试。老版本可能在处理某些代码时出现异常。

@lyfi2003 : 謝謝,我先安裝 1.9.3 再試試看

想請問@lyfi2003 , @cxh116 兩位,如是 ubuntu 12.04 64-bit,是否也會有影響?

#5 楼 @emmetyu 应该是没有影响的,你先更新到新版本试一下再反馈一下,再针对进行处理。

@lyfi2003 : 已安裝 1.9.3, 但仍舊一樣的錯誤。

b.goto 'http://www.baidu.com/' 会报错不?

#7 楼 @emmetyu 现在没啥太明确的思路,你可以

  1. lib/ruby/1.9.1/uri/common.rb 125 行增加 puts "uri= #{uri}"
  2. 再跑一遍

我这里正常的输出类似于:

uri= http://127.0.0.1:7055/hub
uri= session
uri= http://127.0.0.1:7055/hub/session/d00dda96-e645-42f6-837d-e475e50b2fd6
uri= session/d00dda96-e645-42f6-837d-e475e50b2fd6/url
uri= session/d00dda96-e645-42f6-837d-e475e50b2fd6/title

@cxh116 : 是的,一樣的錯誤

@lyfi2003 : 輸出如下

uri= http://127.0.0.1:7056/hub uri= http:// 也就是沒有存 session ?

#11 楼 @emmetyu 有可能是,需要检查你的 Firefox 设置了,是否开启了 cookie , 尝试恢复缺省配置试试。

@lyfi2003 : 有開啟儲存 cookie , 但一樣的結果。

看起來真的是抓不到,因為我也安裝 opera , 但真的會抓不到網址。

@cxh116 , @lyfi2003 : 看來是我這台電腦的問題,在另一台同樣 Ubuntu 12.04 就沒有問題,感謝兩位的回答!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号