2012-02-16 96 views
1

當我點擊這個標籤:超時::後新的瀏覽器窗口打開的錯誤

<label>&nbsp;Row&nbsp;</label> 

使用該代碼的Watir

br.frame(:name, "frameset").frame(:name, "main_content").span(:class=>"tabtext", :text=>/Row/).click 

一個新的瀏覽器窗口打開,但我收到此錯誤信息:

Timeout::Error: Timeout::Error 
from /Users/zeljko/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill' 
from /Users/zeljko/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/protocol.rb:140:in `rbuf_fill' 
from /Users/zeljko/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil' 
from /Users/zeljko/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/protocol.rb:132:in `readline' 
from /Users/zeljko/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:2562:in `read_status_line' 
from /Users/zeljko/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:2551:in `read_new' 
from /Users/zeljko/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:1319:in `block in transport_request' 
from /Users/zeljko/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:1316:in `catch' 
from /Users/zeljko/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:1316:in `transport_request' 
from /Users/zeljko/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:1293:in `request' 
from /Users/zeljko/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:1286:in `block in request' 
from /Users/zeljko/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:745:in `start' 
from /Users/zeljko/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:1284:in `request' 
from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/default.rb:81:in `response_for' 
from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/default.rb:43:in `request' 
from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call' 
from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:590:in `raw_execute' 
from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:568:in `execute' 
from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:350:in `clickElement' 
from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/common/element.rb:34:in `click' 
from /Users/zeljko/.rvm/gems/ruby-1.9.3-p0/gems/watir-webdriver-0.5.3/lib/watir-webdriver/elements/element.rb:107:in `click' 
from (irb):75 
from /Users/zeljko/.rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in `<main>' 

我沒有在任何瀏覽器窗口中看到任何奇怪的東西。新窗口打開很快。我不知道爲什麼我有超時錯誤。我能做些什麼來擺脫它?或者頁面的響應速度很慢?

如果我拯救了異常,我可以關閉新窗口並繼續執行腳本,但我想避免解救錯誤。

環境:Mac OS X的10.7.3,火狐10.0.1,紅寶石1.9.3p0,硒webdriver的2.19.0,的Watir-的webdriver 0.5.3

更新:

我很確定問題是由window.showModalDialog打開的窗口造成的。例如,這個超時:

b.execute_script "window.showModalDialog('http://google.com');" 

我會調查更多並更新問題。看起來像硒不支持window.showModalDialog尚未:http://code.google.com/p/selenium/issues/detail?id=284

+0

除非你能創建一個讓我們重現問題的例子,否則很難提供幫助。 – jarib 2012-02-16 09:14:56

+0

你是否已經增加了你的驅動程序超時? – 2012-02-16 16:25:08

+0

這可能與它打開一個新窗口的事實有關,而不僅僅是在瀏覽器內導航?是.click期待本地瀏覽器做些什麼,並因爲它不是? – 2012-02-16 19:00:53

回答

0

由於您點擊跨度,這不是通常會響應基本HTML中的點擊,它讓我懷疑有某種JavaScript代碼正在也許是因爲看到一個onclick事件而被執行。

您是否嘗試過使用.fire_event('onclick')而不是.click來查看是否仍會調用打開新頁面但避免超時的代碼?

+0

謝謝@Chuck,試過了,但它沒有幫助。 – 2012-02-17 03:55:40

+0

如果你在windows上,我會建議使用Fiddler2 HTTP代理來觀察流量,看看是否有未完成的服務器請求。不知道mac或* nix系統的等價物是什麼。 – 2012-02-17 18:44:31

+0

好主意。如果客戶決定資助進一步調查,我會嘗試。現在我只是解救超時異常並繼續使用腳本。這是最容易做的事情。 – 2012-02-17 19:27:42

相關問題