I'm running into the exception below when I try to take an action on my 
primary tab while an alert is open on another tab, 

I should note that closing the alert using *browser.windows.last.use { 
browser.alert.close }* avoids the problem but would require me to be aware 
of the alert beforehand. Checking on each tab would not be practical as 
each would need to timeout should an alert be open on a different tab.

Is there anything I'm missing? Is this a Watir issue? Either way, can 
anyone advise on how I should proceed?

Thanks!


*Stacktrace:*

C:/Ruby23/lib/ruby/2.3.0/net/protocol.rb:158:in `rbuf_fill': 
Net::ReadTimeout (Net::ReadTimeout)
        from C:/Ruby23/lib/ruby/2.3.0/net/protocol.rb:136:in `readuntil'
        from C:/Ruby23/lib/ruby/2.3.0/net/protocol.rb:146:in `readline'
        from C:/Ruby23/lib/ruby/2.3.0/net/http/response.rb:40:in 
`read_status_line'
        from C:/Ruby23/lib/ruby/2.3.0/net/http/response.rb:29:in `read_new'
        from C:/Ruby23/lib/ruby/2.3.0/net/http.rb:1437:in `block in 
transport_request'
        from C:/Ruby23/lib/ruby/2.3.0/net/http.rb:1434:in `catch'
        from C:/Ruby23/lib/ruby/2.3.0/net/http.rb:1434:in 
`transport_request'
        from C:/Ruby23/lib/ruby/2.3.0/net/http.rb:1407:in `request'
        from C:/Ruby23/lib/ruby/2.3.0/net/http.rb:1400:in `block in request'
        from C:/Ruby23/lib/ruby/2.3.0/net/http.rb:853:in `start'
        from C:/Ruby23/lib/ruby/2.3.0/net/http.rb:1398:in `request'
        from 
C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/http/default.rb:124:in
 
`response_for'
        from 
C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/http/default.rb:78:in
 
`request'
        from 
C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/http/common.rb:63:in
 
`call'
        from 
C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/bridge.rb:645:in
 
`raw_execute'
        from 
C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/bridge.rb:623:in
 
`execute'
        from 
C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/remote/bridge.rb:157:in
 
`alert_text'
        from 
C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/common/alert.rb:27:in
 
`initialize'
        from 
C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/common/target_locator.rb:107:in
 
`new'
        from 
C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.0.5/lib/selenium/webdriver/common/target_locator.rb:107:in
 
`alert'
        from 
C:/Ruby23/lib/ruby/gems/2.3.0/gems/watir-webdriver-0.9.3/lib/watir-webdriver/alert.rb:98:in
 
`assert_exists'
        from 
C:/Ruby23/lib/ruby/gems/2.3.0/gems/watir-webdriver-0.9.3/lib/watir-webdriver/alert.rb:80:in
 
`exists?'
        from test_timeout.rb:26:in `alert_test'
        from test_timeout.rb:29:in `<main>'


* Script to replicate:*

require 'watir'

def alert_test
  url = 'http://bit.ly/watir-example'
  browser = Watir::Browser.new(:chrome)
  browser.goto url
  browser.text_field(name: "entry.1000000").wait_until_present

  # Add link opening new tab
  script = "var a = document.createElement('a');" \
           "a.setAttribute('href', '#{url}');"\
           "a.setAttribute('target', '_blank');"\
           "a.innerHTML = '#{url}';"\
           "document.getElementsByTagName('body')[0].appendChild(a);";
  browser.execute_script(script)

  browser.link(text: url).when_present.click
  
  # Open alert in second tab
  browser.windows.last.use do
    browser.execute_script("alert()")
  end
  
  browser.alert.present?
end

alert_test

-- 
-- 
Before posting, please read http://watir.com/support. In short: search before 
you ask, be nice.

watir-general@googlegroups.com
http://groups.google.com/group/watir-general
watir-general+unsubscr...@googlegroups.com

--- 
You received this message because you are subscribed to the Google Groups 
"Watir General" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to watir-general+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to