Когда я нажимаю этот ярлык:
<label> Row </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, Firefox 10.0.1, ruby 1.9.3p0, selenium-webdriver 2.19.0, watir-webdriver 0.5.3
Обновление:
Я почти уверен, что проблема вызвана тем, что окно открывается window.showModalDialog
. Например, это время ожидания:
b.execute_script "window.showModalDialog('http://google.com');"
Я буду больше изучать и обновлять вопрос. Похоже, что Selenium пока не поддерживает window.showModalDialog
: http://code.google.com/p/selenium/issues/detail?id=284