Reputation: 1
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
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:
Upvotes: 2