2011-04-13 67 views
0

蔭的彈出式窗口的工作即處理基本身份驗證windows.Please找到下面的代碼,我試圖運行與無法處理基本身份驗證窗口

{ 

require 'watir/ie' 

require 'win32ole' 

require 'watir/WindowHelper' 

ie=Watir::IE.new 

ie.goto "http://www.google.com" 

helper = WindowHelper.new 

helper.logon('Connect to proxy1','Mohammed','WE8SR')  # where title=Connect to Proxy1 is the auth window,User name= Mohammed and Password=WE8SR. 
puts x.inspect 

ie.close 

} 

會發生什麼考驗的是用戶名和密碼被從未在認證窗口中輸入並顯示Timedout Error

ruby google_search.rb 
C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-1.7.1/lib/watir/ie-class.rb:494:in sleep': execution expired (Timeout::Error) 
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-1.7.1/lib/watir/ie-class.rb:494:in block in wait' 
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-1.7.1/lib/watir/ie-class.rb:491:in wait' 
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-1.7.1/lib/watir/ie-class.rb:357:in goto' 
from google_search.rb:96:in `<main>' 
>Exit code: 1 

這是與版本的的Ruby 1.9.2我現在用的是什麼問題?

我修改的代碼的方法logonWindowHelper.rb並試圖這樣做。

// Actual method in the "WindowHelper.rb" file 
{ 

    def logon(title,name = 'john doe',password = 'john doe') 

     @autoit.WinWait title, "" 

     @autoit.Send name 

     @autoit.Send "{TAB}" 

     @autoit.Send password 

     @autoit.Send "{ENTER}" 

    end 
} 

代碼,我修改,發現有時工作

{ 

     def logon(title,name,password) 

     @autoit.WinWait title, "" 

     @autoit.Send name 

     @autoit.Send "{TAB}" 

     @autoit.Send password 

     @autoit.Send "{ENTER}" 

    end 

} 

我已經嘗試了各種博客的解決方案。建議我如果我錯過了一些東西。

+0

我想我是有點糊塗轉到方法,當我登錄在谷歌不會彈出認證一個單獨的窗口。這是否是由您的站點的IT人員施加的一些Windows級別身份驗證,以獲得對代理服務器的訪問權限? – 2011-04-13 17:23:59

+1

你能給出超時錯誤的錯誤文本嗎? – 2011-04-13 17:24:31

+0

喜查, 在我來說,我確實有當地IT團隊做訪問代理服務器的Windows級認證,即我得到這個認證窗口的原因。 顯示下面的錯誤消息,執行不會發生。 – ajazz 2011-04-14 05:23:30

回答

0

我猜處理基本身份驗證,因爲您的錯誤文中說,在這被轉到方法使用wait方法發生超時錯誤之前,你的腳本停止。

嘗試ie.navigate方法,而不是像下面

require 'watir/ie' 
require 'win32ole' 
require 'watir/WindowHelper' 

ie=Watir::IE.new 

ie.ie.navigate "http://www.google.com" 

helper = WindowHelper.new 

helper.logon('Connect to proxy1','Mohammed','WE8SR')  # where title=Connect to Proxy1 is the auth window,User name= Mohammed and Password=WE8SR. 
puts x.inspect 

ie.close 
+0

關於使用「ie.ie.navigate」http://www.google.com「」,處理認證窗口,顯示空白頁面,產生以下內容錯誤消息: > ruby​​ google_search。rb C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-1.7.1/lib/watir/ie-class.rb:403:在'method_missing'中:未知屬性或方法:'hwnd' (NoMethodError) HRESULT錯誤代碼:0x800706ba RPC服務器不可用。 \t from C:/Ruby192/lib/ruby/gems/1.9.1/gems/watir-1.7.1/lib/watir/ie-class.rb:403:在close中 \t from google_search.rb:107 :在'

' #> 零 >退出代碼:1 – ajazz 2011-04-14 11:25:47

+0

即通過修改代碼精美製作: 需要 '的Watir /即' 需要' WIN32OLE」 需要 '的Watir/WindowHelper' 即=的Watir :: IE.new ie.ie.navigate 「http://www.google.com」 幫手= WindowHelper.new 提出helper.inspect x = helper.logon('Connect to fproxy1','Mohammed.Ali1','WE8SRgmC') puts x.inspect ie.ie.navigate「http://www.yahoo.com」 ie.close 非常感謝Yutaka。 ajazz。 – ajazz 2011-04-14 11:33:40

+0

如果有效,你爲什麼不接受答案? – 2011-04-14 22:16:21