user1262418
user1262418

Reputation: 1

WebDriver::Error::UnknownError: Session has no driver. The browser window may have been closed - Unable to recognize the Confirmation overlay

I am trying to automate a purchase made from a Product Page in an e-commerce application. Once the user clicks on Buy Now button a log in pop up appears to enter user's credentials. Once the user logs in successfully, a confirmation overlay appears (and the log in pop up window closes) with the confirming purchase option. However the webdriver is not able to recognize the session on the parent browser window.

Here is the script I am using to drive the test:

require "rubygems"
require "watir-webdriver"
browser = Watir::Browser.start "http://qa02.barnesandnoble.com/w/james-pattersons-witch-   and-wizard-james-patterson/1101936910?ean=2940000962145&itm=1&usri=james+patterson"
browser.button(:caption,'Buy Now').click
sleep 5 #Wait until the Log in Pop comes up
puts browser.windows.size
browser.window(:url,/signin/).use
browser.text_field(:id, "login-email").set "[email protected]"
browser.text_field(:id, "login-password").set "bookcom"
browser.button(:caption,/Secure Sign In/).click
sleep 8 #Wait until confirm overlay appears
puts browser.windows.size
browser.window(:url,/w/).use
browser.button(:caption,/Confirm/).click




?> browser.button(:caption,/Confirm/).click
Selenium::WebDriver::Error::UnknownError: Session [a758cfba-7f00-f148-b9e6-f969c9402228] has no driver. The browser window may have been closed.
    from [remote server] file:///var/folders/wM/wMhMTIyBE9Cdrfjt6sgbPk+++TQ/-Tmp-/webdriver-profile20120311-1255-16gc4a5/extensions/[email protected]/components/command_processor.js:10583:in `unknown'
    from [remote server] file:///var/folders/wM/wMhMTIyBE9Cdrfjt6sgbPk+++TQ/-Tmp-/webdriver-profile20120311-1255-16gc4a5/extensions/[email protected]/components/driver_component.js:9631:in `unknown'
    from [remote server] file:///var/folders/wM/wMhMTIyBE9Cdrfjt6sgbPk+++TQ/-Tmp-/webdriver-profile20120311-1255-16gc4a5/extensions/[email protected]/components/driver_component.js:9785:in `unknown'
    from [remote server] file:///var/folders/wM/wMhMTIyBE9Cdrfjt6sgbPk+++TQ/-Tmp-/webdriver-profile20120311-1255-16gc4a5/extensions/[email protected]/components/driver_component.js:9732:in `unknown'
    from [remote server] file:///var/folders/wM/wMhMTIyBE9Cdrfjt6sgbPk+++TQ/-Tmp-/webdriver-profile20120311-1255-16gc4a5/extensions/[email protected]/components/driver_component.js:10781:in `unknown'
    from [remote server] file:///var/folders/wM/wMhMTIyBE9Cdrfjt6sgbPk+++TQ/-Tmp-/webdriver-profile20120311-1255-16gc4a5/extensions/[email protected]/components/httpd.js:1935:in `unknown'
    from [remote server] file:///var/folders/wM/wMhMTIyBE9Cdrfjt6sgbPk+++TQ/-Tmp-/webdriver-profile20120311-1255-16gc4a5/extensions/[email protected]/components/httpd.js:2261:in `unknown'
    from [remote server] file:///var/folders/wM/wMhMTIyBE9Cdrfjt6sgbPk+++TQ/-Tmp-/webdriver-profile20120311-1255-16gc4a5/extensions/[email protected]/components/httpd.js:1168:in `unknown'
    from [remote server] file:///var/folders/wM/wMhMTIyBE9Cdrfjt6sgbPk+++TQ/-Tmp-/webdriver-profile20120311-1255-16gc4a5/extensions/[email protected]/components/httpd.js:1616:in `unknown'
    from [remote server] file:///var/folders/wM/wMhMTIyBE9Cdrfjt6sgbPk+++TQ/-Tmp-/webdriver-profile20120311-1255-16gc4a5/extensions/[email protected]/components/httpd.js:1464:in `unknown'
    from [remote server] file:///var/folders/wM/wMhMTIyBE9Cdrfjt6sgbPk+++TQ/-Tmp-/webdriver-profile20120311-1255-16gc4a5/extensions/[email protected]/components/httpd.js:1333:in `unknown'
    from /Library/Ruby/Gems/1.8/gems/selenium-webdriver-2.20.0/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
    from /Library/Ruby/Gems/1.8/gems/selenium-webdriver-2.20.0/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
    from /Library/Ruby/Gems/1.8/gems/selenium-webdriver-2.20.0/lib/selenium/webdriver/remote/http/common.rb:59:in `new'
    from /Library/Ruby/Gems/1.8/gems/selenium-webdriver-2.20.0/lib/selenium/webdriver/remote/http/common.rb:59:in `create_response'
    from /Library/Ruby/Gems/1.8/gems/selenium-webdriver-2.20.0/lib/selenium/webdriver/remote/http/default.rb:64:in `request'
    from /Library/Ruby/Gems/1.8/gems/selenium-webdriver-2.20.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
    from /Library/Ruby/Gems/1.8/gems/selenium-webdriver-2.20.0/lib/selenium/webdriver/remote/bridge.rb:594:in `raw_execute'
    from /Library/Ruby/Gems/1.8/gems/selenium-webdriver-2.20.0/lib/selenium/webdriver/remote/bridge.rb:572:in `execute'
    from /Library/Ruby/Gems/1.8/gems/selenium-webdriver-2.20.0/lib/selenium/webdriver/remote/bridge.rb:183:in `switchToDefaultContent'
    from /Library/Ruby/Gems/1.8/gems/selenium-webdriver-2.20.0/lib/selenium/webdriver/common/target_locator.rb:68:in `default_content'
    from /Library/Ruby/Gems/1.8/gems/watir-webdriver-0.5.3/lib/watir-webdriver/browser.rb:166:in `assert_exists'
    from /Library/Ruby/Gems/1.8/gems/watir-webdriver-0.5.3/lib/watir-webdriver/elements/button.rb:52:in `locate'
    from /Library/Ruby/Gems/1.8/gems/watir-webdriver-0.5.3/lib/watir-webdriver/elements/element.rb:361:in `assert_exists'
    from /Library/Ruby/Gems/1.8/gems/watir-webdriver-0.5.3/lib/watir-webdriver/elements/element.rb:94:in `click'
    from secondruby.rb:15>> 

Upvotes: 0

Views: 2186

Answers (1)

Justin Ko
Justin Ko

Reputation: 46836

I do not fully understand the technical details of browser.window.use as this is the first time I have looked at it. However, I was able to get the script to run by doing this:

require "rubygems"
require "watir-webdriver"
browser = Watir::Browser.start "http://www.barnesandnoble.com/w/private-games-james-patterson/1104155019?ean=9780316206822&itm=1&usri=james+patterson"
browser.button(:caption,'Buy Now').click
sleep 5 #Wait until the Log in Pop comes up
puts browser.windows.size
browser.window(:url,/signin/).use do
    browser.text_field(:id, "login-email").set "[email protected]"
    browser.text_field(:id, "login-password").set "bookcom"
    browser.button(:caption,/Secure Sign In/).click
end
sleep 8 #Wait until confirm overlay appears
puts browser.windows.size
browser.window(:url,/w/).use
browser.button(:caption,/Confirm/).click

The changes I made were:

  1. The popup actions were passed as a block into browser.window.use
  2. The second browser.window.use was no longer need so was removed
  3. The url was changed to "http://www.barnesandnoble.com/w/private-games-james-patterson/1104155019?ean=9780316206822&itm=1&usri=james+patterson" since I could not get the original URL to work. I assume this is irrelevant.

Upvotes: 2

Related Questions