Watir web automated tests

63
WATIR Web Automated Tests Demo Jun, 2012

description

Watir is an open-source Ruby libraries. It drives browsers the same way people do no matter what technology it is developed in. This video will guide you on how to write test scripts using Watir for web application testing using across different browsersThere are 6 test scenarios in this demo:- The 1st scenario is Test with Microsoft page -- launch some pages from this site and check Search functions.- The 2nd scenario is Test with Yahoo page -- Sending email- The 3rd scenario is Test with Apple page -- Online Shopping- The 4th scenario is Test with YouTube page -- Browse and Upload video- The 5th scenario is Test with SlideShare page -- Download and upload presentation- The last scenario is Test with Facebook page -- Share info and chatFor each scenario, we will present 'how to implement' in detail step. At the end of each case, the test script will be run to show test results.Any support, please contact us at http://www.nexlesoft.com

Transcript of Watir web automated tests

Page 1: Watir web automated tests

WATIR Web Automated

Tests Demo

Jun, 2012

Page 2: Watir web automated tests

TEST SCENARIOS

WATIR

Scenario 1

Scenario 2

Scenario 3

Scenario 4

Scenario 5

Scenario 6

Page 3: Watir web automated tests

SCENARIO OVERVIEW

Scenario Overview

• Scenario 1: Test on Microsoft page – launch some pages from this site and check Search function.

• Scenario 2: Test on Yahoo page – check Sending Mail.

• Scenario 3: Test on Apple page – check Online Shopping.

• Scenario 4: Test on Youtube page – check Browse and Upload videos.

• Scenario 5: Test on SlideShare page – check Download and Upload presentation.

• Scenario 6: Test on Facebook page – check Share info and Chat.

Page 4: Watir web automated tests

TEST SCENARIO 1

Test with Microsoft page

• Step 1: Open Internet Explorer

• Step 2: Go to http://www.microsoft.com/en-us/default.aspx

• Step 3: Launch Windows tab

• Step 4: Select an item in the dialog

• Step 5: Validate and make sure the selected item opens a new page

• Step 6: Repeat the same for other menu items

• Step 7: Get key words from data file (contains 10 key words) and put into the Search text box

• Step 8: Click on Search button or press Enter

• Step 9: Validate that results returned in the Search result page contain the input key word

• Step 10: Move on next result page to find other results

• Step 11: Repeat the test for Chrome and Firefox

Page 5: Watir web automated tests

TEST SCENARIO 1

How to implement? (START SCRIPT)

require "watir-webdriver" include Watir require 'logger‘ #path store file: script, data file, logs… path = File.dirname(__FILE__) #create log file name_log = 'TEST_Scenario_1' file = File.open(path + '/logs/' + name_log + '_logFile.log', File::WRONLY | File::APPEND | File::CREAT) logger = Logger.new(file)

Page 6: Watir web automated tests

TEST SCENARIO 1

How to implement? (Step 1 -> Step 4)

Step 1: #Step 1: Open Internet Explorer browser = Watir::Browser.new :ie

Step 2: #Step 2: Go to http://www.microsoft.com/en-us/default.aspx test_site = 'http://www.microsoft.com/en-us/default.aspx' browser.goto(test_site)

Step 3: #Step 3: Launch Windows tab browser.li(:xpath, "//li[contains(@id, 'ctl00_ctl14_ItemsRepeater_ctl01_MenuItem')]").link(:xpath, "//a[contains(@href, 'mnui=1')]").click

Step 4: #Step 4: Select Windows Phone item in the dialog browser.ul(:id=>"ctl00_ctl14_ItemsRepeater_ctl01_Level2Columns_ctl00_Level2Repeater_ctl00_Level3List").link(:text=>"Windows Phone").click #Windows Phone item is clicked.

Page 7: Watir web automated tests

TEST SCENARIO 1

How to implement? (Step 5 -> Step 6)

Step 5: #Step 5: Validate and make sure the selected item opens a new page Wait.until {browser.title.include? "Windows Phone"} #Check window title include text logger.info ("=> PASS. Window title: ") + browser.title

Step 6: #Back to site http://www.microsoft.com/en-us/default.aspx browser.back #Launch Products tab browser.li(:xpath, "//li[contains(@id, 'ctl00_ctl14_ItemsRepeater_ctl00_MenuItem')]").link(:xpath, "//a[contains(@href, 'mnui=0')]").click #Select 'Windows Phone' item in the dialog browser.ul(:id=>"ctl00_ctl14_ItemsRepeater_ctl00_Level2Columns_ctl00_Level2Repeater_ctl00_Level3List").link(:text=>"Windows Phone").click #Validate and make sure the selected item opens a new page Wait.until {browser.title.include? "Windows Phone"} logger.info ("=> PASS. Window title: ") + browser.title #Window title: Windows Phone | Cell Phones, Mobile…

Page 8: Watir web automated tests

TEST SCENARIO 1

How to implement? (Step 7 -> Step 10)

Step 7 -> Step 10 # Step 7: Get key words from data file require path + '/Xls.rb' #Read data from excel file xlFile = XLS.new(path + '/data/data_file.xlsx') #grab the data file in the same directory myData = xlFile.getRowRecords('A1:B11', 'search_key') #pull data records from excel xlFile.close #Step 7, 8: Input data to Search textbox and click Search button myData.each do |record| if record['key'] != "“ # record key in data file is not blank. if browser.text_field(:id, /searchInput/).exists? browser.text_field(:id, /searchInput/).set(record['key']) #input search key browser.input(:id=>/searchButton/).click #click Search button else browser.text_field(:id, /boxResultsSearch/).set(record['key']) #input search key browser.input(:id=>/btResultsSearch/).click #click Search button end

Page 9: Watir web automated tests

TEST SCENARIO 1

How to implement? (Step 7 -> Step 10) cont.

Step 7 -> Step 10 (cont): #Step 9: Validate that results returned in the Search result page contain the input key word Wait.until {browser.title.include? "Search results page"} #Search result is displayed. Wait.until {browser.div(:id=>/ResultsArea/).exists?} #If search key has 2 words, need to separate word. Example: ‘Window Vista’ skey = record['key'].split(" ") fresult = false #Validate search result include search key or not skey.each do |key| if browser.div(:id=>/ResultsArea/).text.include? key fresult = true break end end if fresult #search results contain search key logger.info ("=> PASS. Search content contains input key word") else logger.info ("=> FAIL. Search content does NOT contain input key word") end

Page 10: Watir web automated tests

TEST SCENARIO 1

How to implement? (Step 7 -> Step 10) cont.

Step 7 -> Step 10 (cont): #Step 10: Move on next result page to find other results #check whether search result has more 1 page or note if browser.div(:id=>/ResultsArea/).link(:id=>/NavigationLink/,:text=>"2").exists? #If have more 1 page, click the 2nd page browser.div(:id=>/ResultsArea/).link(:id=>/NavigationLink/,:text=>"2").click Wait.until {browser.title.include? "Search results page"} Wait.until {browser.div(:id=>/ResultsArea/).exists?} #Check search result of next page is displayed. if browser.div(:id=>/ResultsArea/).text.include? '11-20 out of' logger.info ("=> PASS. Search result of next page is displayed") #If search key has 2 words, need to separate word. Example: ‘Window Vista’ skey = record['key'].split(" ") fresult = false #Validate search result include search key or not skey.each do |key| if browser.div(:id=>/ResultsArea/).text.include? key fresult = true break end end

Page 11: Watir web automated tests

TEST SCENARIO 1

How to implement? (Step 7 -> Step 10) cont.

Step 7 -> Step 10 (cont): #Step 10: Move on next result page to find other results (cont.) if fresult #search results contain search key #return message when search content of next page contains input key word logger.info ("=> PASS. Search content of next page contains input key word") else #return message when search content of next page does NOT contain input key word logger.info ("=> FAIL. Search content of next page does NOT contain input key word") end else #return message when search result of next page is NOT displayed logger.info ("=> FAIL. Search result of next page is NOT displayed") end else #return message when search result doesn’t have more 1 page logger.info ("=> Search result have NO the next page.") end end end

Page 12: Watir web automated tests

TEST SCENARIO 1

How to implement? (END SCRIPT)

RUN SCRIPT

Page 13: Watir web automated tests

TEST SCENARIO 2

Test with Yahoo page – Sending email

• Step 1: Open Internet Explorer

• Step 2: Navigate to http://mail.yahoo.com/

• Step 3: Login with a valid account.

• Step 4: Check “Keep me signed in ” checkbox

• Step 5: Click on Sign In button

• Step 6: Compose an sample email and click Sent

• Step 7: Navigate to Sent item and make sure the sent email is in this folder

• Step 8: Sign out

• Step 9: Repeat the test for Firefox and IE

Page 14: Watir web automated tests

TEST SCENARIO 2

How to implement? (START SCRIPT)

require "watir-webdriver" include Watir require 'logger‘ #path store file: script, data file, logs… path = File.dirname(__FILE__) #read data from source file (.xlsx file) xlFile = XLS.new(path + '/data/data_file.xlsx') #grab the data file in the same directory myData = xlFile.getRowRecords('A1:D3', 'login') #pull data records from excel xlFile.close #create log file name_log = 'TEST_Scenario_2' file = File.open(path + '/logs/' + name_log + '_logFile.log', File::WRONLY | File::APPEND | File::CREAT) logger = Logger.new(file)

Page 15: Watir web automated tests

TEST SCENARIO 2

How to implement? (Step 1 -> Step 2)

Step 1: #Step 1: Open Internet Explorer logger.info "::::" + name_log + " | START TESTING on IE" logger.info ("Step 1: Open Internet Explorer") browser = Watir::Browser.new :ie

Step 2: #Step 2: Navigate to http://mail.yahoo.com/ logger.info ("Step 2: Navigate to http://mail.yahoo.com/") test_site = 'http://mail.yahoo.com/' browser.goto(test_site)

Page 16: Watir web automated tests

TEST SCENARIO 2

How to implement? (Step 3 -> Step 5)

Step 3: #Step 3: Login with a valid account. logger.info ("Step 3: Login with a valid account.") myData.each do |record| browser.div(:id => "inputs").text_field(:id, record['Element']).set(record['Input']) logger.info ("- " + record['FieldList'] + ": " + record['Input']) end

Step 4: #Step 4: Check 'Keep me signed in' checkbox logger.info ("Step 4: Check 'Keep me signed in' checkbox") browser.checkbox(:id, 'persistent').set? browser.checkbox(:id, 'persistent').set #'Keep me signed in' checkbox is checked.

Step 5: #Step 5: Click on Sign In button logger.info ("Step 5: Click on Sign In button") browser.button(:id, '.save').click #click Sign In button Wait.until {browser.span(:id=>"main-btn-new").a(:text=>"Compose Message").exist?}

Page 17: Watir web automated tests

TEST SCENARIO 2

How to implement? (Step 6)

Step 6: #Step 6: Compose an sample email and click Sent logger.info ("Step 6: Compose an sample email and click Sent") browser.span(:id=>"main-btn-new").a(:text=>"Compose Message").click #click Compose Message button Wait.until {browser.text_field(:id=>"to-field").exist?} input_to = "[email protected]" input_subject = "Test mail yahoo" input_content = "Watir practice" browser.text_field(:id=>"to-field").set(input_to) #fill To address logger.info "- To: " + (input_to) browser.text_field(:id=>"subject-field").set(input_subject) #fill Subject logger.info "- Subject: " + (input_subject) browser.frame(:title=>"Message Body").send_keys input_content #fill Mail content logger.info "- Content: " + (input_content) browser.link(:text=>"Send").click #click Send button logger.info ("- Click 'Send' button.") Wait.until { browser.text.include? 'Email Sent' } #Email sent logger.info ("=> Email Sent")

Page 18: Watir web automated tests

TEST SCENARIO 2

How to implement? (Step 7)

Step 7: #Step 7: Navigate to Sent item and make sure the sent email is in this folder logger.info ("Step 7: Navigate to Sent item and make sure the sent email is in this folder") logger.info ("- Open Sent folder") browser.div(:id=>"nav-mailboxes").li(:id=>"Sent").click #open Sent folder Wait.until {browser.ul(:id=>"tablist").a(:id=>"tabinbox", :title=>/SENT/).exists?} logger.info ("=> Send folder is opened.") logger.info ("- Make sure the sent email is in Sent folder") #check email sent if ((browser.div(:id=>"msg-list").div(:class=>"list-view-items").divs[0].div(:class=>"from").text.include? input_to) && (browser.div(:id=>"msg-list").div(:class=>"list-view- items").divs[0].div(:class=>"subj").text.include? input_subject)) logger.info ("=> PASS“) else logger.info ("=> FAIL") end

Page 19: Watir web automated tests

TEST SCENARIO 2

How to implement? (Step 8)

Step 8: #Step 8: Sign out logger.info ("Step 8: Sign out") browser.li(:id=>"yuhead-me-signout").click #click Sign Out button Wait.until { browser.window(:url, "http://vn.yahoo.com/?p=us").exists? } logger.info ("=> The page is log out.") browser.close logger.info ("::::END TESTING.")

Page 20: Watir web automated tests

TEST SCENARIO 2

How to implement? (END SCRIPT)

RUN SCRIPT

Page 21: Watir web automated tests

TEST SCENARIO 3

Test with Apple page – Online Shopping

• Step 1: Open Internet Explorer

• Step 2: Navigate to http://store.apple.com/us

• Step 3: Launch Shop iPad on the left side

• Step 4: Click on Select an iPad button

• Step 5: Choose a color and a model

• Step 6: Click on Continue button on the left side

• Step 7: Click on Skip Engraving hyperlink

• Step 8: Add an iPad Smart Cover and Smart Case

• Step 9: Select Apple iPad Camera Connection Kit, iPad Dock, and wireless keyboard under Accessories

• Step 10: Click Add to Cart button

• Step 11: Repeat the test for Chrome and Firefox

Page 22: Watir web automated tests

TEST SCENARIO 3

How to implement? (START SCRIPT)

require "watir-webdriver" include Watir require 'logger‘ #path store file: script, data file, logs… path = File.dirname(__FILE__) #create log file name_log = 'TEST_Scenario_3' file = File.open(path + '/logs/' + name_log + '_logFile.log', File::WRONLY | File::APPEND | File::CREAT) logger = Logger.new(file)

Page 23: Watir web automated tests

TEST SCENARIO 3

How to implement? (Step 1 -> Step 3)

Step 1: #Step 1: Open Internet Explorer logger.info "::::" + name_log + " | START TESTING on IE" logger.info ("Step 1: Open Internet Explorer") browser = Watir::Browser.new :ie

Step 2: #Step 2: Navigate to http://store.apple.com/us logger.info ("Step 2: Navigate to http://store.apple.com/us") test_site = 'http://store.apple.com/us' browser.goto(test_site) logger.info ("=> Window title: ") + browser.title

Step 3: #Step 3: Launch Shop iPad on the left side logger.info ("Step 3: Launch Shop iPad on the left side") browser.ul(:class=>"departments").link(:href, /shop_ipad/).click #Click link Shop iPad Wait.until {browser.title.include?"Apple iPad"} logger.info ("=> New window is opened. Title: ") + browser.title

Page 24: Watir web automated tests

TEST SCENARIO 3

How to implement? (Step 4 -> Step 5)

Step 4: #Step 4: Click on Select an iPad button logger.info ("Step 4: Click on Select an iPad button") browser.div(:id=>"hero-gallery").a(:href, /new_ipad/).click #Click on Select an iPad button Wait.until {browser.title.include?"New iPad"} logger.info ("=> New window is opened. Title: ") + browser.title

Step 5:

#Step 5: Choose a color and a model logger.info ("Step 5: Choose a color and a model") browser.div(:class=>"color-select").li(:class=>"option-1").click #Choose a color logger.info ("- Color: ") + browser.div(:class=>"color-select").li(:class=>"option-1").p(:class=>"color").text browser.div(:class=>"capacity-select selection-container").li(:class=>"option-2").click #Choose a model logger.info ("- Model: ") + browser.div(:class=>"capacity-select selection-container").li(:class=>"option-2").span(:class=>"title").text

Page 25: Watir web automated tests

TEST SCENARIO 3

How to implement? (Step 6 -> Step 8)

Step 6: #Step 6: Click on Continue button on the left side logger.info ("Step 6: Click on Continue button on the left side") browser.button(:name=>"proceed", :title=>"Continue").click Wait.until {browser.title.include? "iPad Engraving"} logger.info ("=> New window is opened. Title: ") + browser.title

Step 7: #Step 7: Click on Skip Engraving hyperlink logger.info ("Step 7: Click on Skip Engraving hyperlink") browser.span(:id=>"coherent_id_2").button(:type=>"submit").click #Click on Continue button browser.link(:text=>"Skip engraving").click Wait.until {browser.title.include? "Accessories"} logger.info ("=> New window is opened. Title: ") + browser.title

Step 8: #Step 8: Add an iPad Smart Cover and Smart Case logger.info ("Step 8: Add an iPad Smart Cover and Smart Case") #----Add Smart Cover: Dark Gray browser.radio(:name=>"composite-group-featured-content", :value=>"MD306LL/A").set

Page 26: Watir web automated tests

TEST SCENARIO 3

How to implement? (Step 8) cont.

Step 8 (cont.): #----Get value of selected Smart Cover, then put to log file radios = browser.radios(:name=>"composite-group-featured-content") radio_check = "NOT CHECK" radios.each do |rdo|

if rdo.set? radio_check = rdo.value

end end logger.info ("- Smart Cover: ") + radio_check #----Add Smart Case: Green browser.radio(:name=>"ao.smartcase_polyurethane", :value=>"MD457LL/A").set

Page 27: Watir web automated tests

TEST SCENARIO 3

How to implement? (Step 8) cont.

Step 8 (cont.): #----Get value of selected Smart Case, then put to log file radios = browser.radios(:name=>"ao.smartcase_polyurethane") radios.each do |rdo|

if rdo.set? radio_check = rdo.value

end end logger.info ("- Smart Case: ") + radio_check

Page 28: Watir web automated tests

TEST SCENARIO 3

How to implement? (Step 9)

Step 9: #Step 9: Select Apple iPad Camera Connection Kit, iPad Dock, and wireless keyboard under Accessories logger.info ("Step 9: Select Apple iPad Camera Connection Kit, iPad Dock, and wireless keyboard under Accessories") #----Select Apple iPad Camera Connection Kit browser.radio(:name=>"ao.camera_connection_kit", :value=>"MC531ZM/A").set #----Get value of selected value, then put to log file radios = browser.radios(:name=>"ao.camera_connection_kit") radios.each do |rdo|

if rdo.set? radio_check = rdo.value

end end logger.info ("- iPad Camera Connection Kit: ") + radio_check #----Select Apple iPad Dock browser.radio(:name=>"ao.ipad_doc", :value=>"MC940ZM/A").set

Page 29: Watir web automated tests

TEST SCENARIO 3

How to implement? (Step 9) cont.

Step 9 (cont.): #----Get value of selected value, then put to log file radios = browser.radios(:name=>"ao.ipad_doc") radios.each do |rdo|

if rdo.set? radio_check = rdo.value

end end logger.info ("- iPad Dock: ") + radio_check #----Select Apple Wireless Keyboard - English browser.radio(:name=>"ao.wireless_keyboard", :value=>"MC184LL/B").set #----Get value of selected value, then put to log file radios = browser.radios(:name=>"ao.wireless_keyboard") radios.each do |rdo|

if rdo.set? radio_check = rdo.value

end end logger.info ("- Apple Wireless Keyboard: ") + radio_check

Page 30: Watir web automated tests

TEST SCENARIO 3

How to implement? (Step 10)

Step 10: #Step 10: Click Add to Cart button logger.info ("Step 10: Click Add to Cart button") browser.ul(:id=>"purchase-info-primary").span(:id=>"proceed-button").button.click #click Add to Cart button logger.info ("=> New window is opened. Title: ") + browser.title logger.info ("::::END TESTING") browser.close

Page 31: Watir web automated tests

TEST SCENARIO 3

How to implement? (END SCRIPT)

RUN SCRIPT

Page 32: Watir web automated tests

TEST SCENARIO 4

Test with YouTube page – Browse and Upload video

• Step 1: Open Internet Explorer

• Step 2: Navigate to http://www.youtube.com/

• Step 3: Sign in YouTube

• Step 4: Get key words from data file (contains 10 key words), put into the Browse text box, and click on Browse button.

• Step 5: Validate that results returned in the Search result page contain the input key word

• Step 6: Select an video from this page and play it

• Step 7: Post a comment for this video

• Step 8: Select Video Manager tab and click on Upload button

• Step 9: Select an video file from your computer and upload it to YouTube

• Step 10: Repeat the test for Chrome and Firefox

Page 33: Watir web automated tests

TEST SCENARIO 4

How to implement? (START SCRIPT)

require "watir-webdriver" require "rautomation" include Watir require 'logger' #path store file: script, data file, logs… path = File.dirname(__FILE__) #create log file name_log = 'TEST_Scenario_4' file = File.open(path + '/logs/' + name_log + '_logFile.log', File::WRONLY | File::APPEND | File::CREAT) logger = Logger.new(file)

Page 34: Watir web automated tests

TEST SCENARIO 4

How to implement? (Step 1 -> Step 2)

Step 1: #Step 1: Open Internet Explorer logger.info "::::" + name_log + " | START TESTING on IE" logger.info ("Step 1: Open Internet Explorer") browser = Watir::Browser.new :ie

Step 2: #Step 2: Navigate to http://www.youtube.com/ logger.info ("Step 2: Navigate to http://www.youtube.com/") test_site = 'http://www.youtube.com/' browser.goto(test_site) logger.info ("=> Window title: ") + browser.title logger.info ("=> URL: ") + browser.url

Page 35: Watir web automated tests

TEST SCENARIO 4

How to implement? (Step 3)

Step 3: #Step 3: Sign in YouTube logger.info ("Step 3: Sign in YouTube") #----read username/password from data file for login form require path + '/Xls.rb' #Read data from excel file xlFile = XLS.new(path + '/data/data_file.xlsx') #grab the data file in the same directory myData = xlFile.getRowRecords('A1:C3', 'login_youtube') #pull data records from excel xlFile.close #----input username/password logger.info ("1. Login in: ") browser.link(:text=>"Sign In").click myData.each do |record| browser.div(:class=>"signin-box").text_field(:id, record['Element']).set(record['Input']) logger.info ("- " + record['FieldList'] + ": " + record['Input']) end

Page 36: Watir web automated tests

TEST SCENARIO 4

How to implement? (Step 3) cont.

Step 3 (cont.): #----click Sign in button logger.info ("2. Click Sign in button ") browser.checkbox(:id=>"PersistentCookie").set? browser.checkbox(:id=>"PersistentCookie").clear browser.button(:id=>"signIn").send_keys :enter #Wait.until {browser.link(:text=>"Sign in to another account...").exist?} logger.info ("=> Window title: ") + browser.title logger.info ("=> URL: ") + browser.url

Page 37: Watir web automated tests

TEST SCENARIO 4

How to implement? (Step 4 -> Step 7)

Step 4 -> Step 7: #Step 4 -> Step 7: logger.info ("Step 4 -> Step 7") logger.info ("- Step 4: Get key words from data file (contains 10 key words), put into the Browse text box, and click on Browse button.") logger.info ("- Step 5: Validate that results returned in the Search result page contain the input key word") logger.info ("- Step 6: Select an video from this page and play it") logger.info ("- Step 7: Post a comment for this video") #Step 4: Get key words from data file (contains 10 key words), put into the Browse text box, and click on Browse button. #Step 5: Validate that results returned in the Search result page contain the input key word #----read data from data file xlFile = XLS.new(path + '/data/data_file.xlsx') #grab the data file in the same directory myData = xlFile.getRowRecords('A1:B11', 'search_youtube') #pull data records from excel xlFile.close

Page 38: Watir web automated tests

TEST SCENARIO 4

How to implement? (Step 4 -> Step 7) cont.

Step 4 -> Step 7 (cont.): #----input key word, then click Search button sleep 4 myData.each do |record| if record['key'] != "" browser.input(:type=>"text", :name=>"search_query").to_subtype.focus browser.input(:type=>"text", :name=>"search_query").to_subtype.set(record['key']) browser.button(:id=>"search-btn").click sleep 4 #----validate search result logger.info ("SEARCH KEY #") + record['#'] + (": ") + record['key'] if browser.div(:id=>"results-main-content").text.upcase.include? record['key'].upcase logger.info ("- Search result included key word.") else logger.info ("- Search result NOT included key word.") end

Page 39: Watir web automated tests

TEST SCENARIO 4

How to implement? (Step 4 -> Step 7) cont.

Step 4 -> Step 7 (cont.): #Step 6: Select an video from this page and play it browser.div(:id=>"results-main-content").link.click Wait.until {browser.textarea(:name=>"comment").exists?} logger.info ("- Video is played. => Title: ") + browser.title sleep 4 #Step 7: Post a comment for this video logger.info ("- Post a comment for video.") browser.textarea(:name=>"comment").send_keys :enter browser.textarea(:name=>"comment").set "Like." browser.button(:class=>/comments-post yt-uix-button yt-uix-button-default/).click sleep 4

Page 40: Watir web automated tests

TEST SCENARIO 4

How to implement? (Step 4 -> Step 7) cont.

Step 4 -> Step 7 (cont.): if browser.text.include? "Error, try again" logger.info ("=> You have recently posted several comments. So cannot post comment anymore.") else logger.info ("=> Comment is posted.") end sleep 4 end end

Page 41: Watir web automated tests

TEST SCENARIO 4

How to implement? (Step 8)

Step 8: #Step 8: Select Video Manager tab and click on Upload button logger.info ("Step 8: Select Video Manager tab and click on Upload button") browser.button(:id=>"masthead-user-button").focus browser.button(:id=>"masthead-user-button").fire_event("onclick") sleep 4 browser.link(:text=>"Video Manager").focus browser.link(:text=>"Video Manager").click browser.div(:id=>"content").button(:text=>/Upload/).click logger.info ("=> URL: ") + browser.url Thread.new { sleep 4 browser.div(:id=>"upload-prompt-box").button(:id=>"start-upload-button-single").click } sleep 4

Page 42: Watir web automated tests

TEST SCENARIO 4

How to implement? (Step 9)

Step 9: #Step 9: Select an video file from your computer and upload it to YouTube logger.info ("Step 9: Select an video file from your computer and upload it to YouTube") win = RAutomation::Window.new(:title => /Select file/i) win.text_field.set ("D:\\Practice\\Watir Practice\\assignment\\video\\Practice1_ff_(6-18-2012 8-52-35 AM).mp4") win.button(:value=>"&Open").click logger.info ("=> URL: ") + browser.url logger.info "::::END TESTING"

Page 43: Watir web automated tests

TEST SCENARIO 4

How to implement? (END SCRIPT)

RUN SCRIPT

Page 44: Watir web automated tests

TEST SCENARIO 5

Test with SlideShare page – Download and upload presentation

• Step 1: Open Internet Explorer

• Step 2: Navigate to http://www.slideshare.net/ and sign in

• Step 3: Get key words from data file (contains 5 key words), put into the Search text box, and click on Search button.

• Step 4: Validate that results returned in the Search result page contain the input key word

• Step 5: Select a presentation from this page and open it.

• Step 6: Post a comment for this presentation

• Step 7: Download this presentation

• Step 8: Email this presentation

• Step 9: Click on Upload button

• Step 10: Select presentation files from your computer and upload it to SlideShare

• Step 11: Repeat the test for Chrome and Firefox

Page 45: Watir web automated tests

TEST SCENARIO 5

How to implement? (START SCRIPT)

require "watir-webdriver" require "rautomation" include Watir require 'logger' #path store file: script, data file, logs… path = File.dirname(__FILE__) #create log file name_log = 'TEST_Scenario_5' file = File.open(path + '/logs/' + name_log + '_logFile.log', File::WRONLY | File::APPEND | File::CREAT) logger = Logger.new(file)

Page 46: Watir web automated tests

TEST SCENARIO 5

How to implement? (Step 1 -> Step 2)

Step 1: #Step 1: Open Internet Explorer logger.info "::::" + name_log + " | START TESTING on IE" logger.info ("Step 1: Open IE") browser = Watir::Browser.new :ie

Step 2: #Step 2: Navigate to http://www.slideshare.net/ and sign in logger.info ("Step 2: Navigate to http://www.slideshare.net/") test_site = 'http://www.slideshare.net/' browser.goto(test_site) logger.info ("=> Window title: ") + browser.title #----Read username/password from data file for login form require path + '/Xls.rb' #Read data from excel file xlFile = XLS.new(path + '/data/data_file.xlsx') #grab the data file in the same directory myData = xlFile.getRowRecords('A1:C3', 'login_slideshare') #pull data records from excel

Page 47: Watir web automated tests

TEST SCENARIO 5

How to implement? (Step 2) cont.

Step 2 (cont.): #----Input username/password logger.info ("1. Login in: ") browser.ul(:id=>"login_link").link(:text=>"Login").click Wait.until {browser.text.include? "Login to SlideShare"} myData.each do |record| browser.text_field(:id, record['Element']).focus browser.text_field(:id, record['Element']).set(record['Input']) logger.info ("- " + record['FieldList'] + ": " + browser.text_field(:id, record['Element']).value) end #----Clear checkbox Remember me browser.checkbox(:id=>"remember").set? browser.checkbox(:id=>"remember").clear #----Click Sign in button logger.info ("2. Click Sign in button ") browser.button(:id=>"login_from_loginpage").focus browser.button(:id=>"login_from_loginpage").click Wait.until{browser.title.include? "Newsfeed"} logger.info ("=> Sign in successfully. Title: ") + browser.title

Page 48: Watir web automated tests

TEST SCENARIO 5

How to implement? (Step 3 -> Step 8)

Step 3 -> Step 8: #Step 3 -> Step 8 #Step 3: Get key words from data file (contains 5 key words), put into the Search text box, and click on Search button. #Step 4: Validate that results returned in the Search result page contain the input key word #Step 5: Select a presentation from this page and open it. #Step 6: Post a comment for this presentation #Step 7: Download this presentation logger.info ("Step 3 -> Step 8") logger.info ("- Step 3: Get key words from data file (contains 5 key words), put into the Search text box, and click on Search button.") logger.info ("- Step 4: Validate that results returned in the Search result page contain the input key word") logger.info ("- Step 5: Select a presentation from this page and open it.") logger.info ("- Step 6: Post a comment for this presentation") logger.info ("- Step 7: Download this presentation") logger.info ("- Step 8: Email this presentation")

Page 49: Watir web automated tests

TEST SCENARIO 5

How to implement? (Step 3 -> Step 8) cont.

Step 3 -> Step 8 (cont.): #----Read from data file myData = xlFile.getRowRecords('A1:B6', 'search_slideshare') #pull data records from excel xlFile.close #----input key word, then click Search button myData.each do |record| if record['key'] != "" browser.input(:type=>"text",:id=>/search_query_top/).to_subtype.focus browser.input(:type=>"text",:id=>/search_query_top/).to_subtype.set(record['key']) if (browser.div(:class=>"advancedSearch").link(:text=>"Filter results").exist?)

browser.div(:class=>"advancedSearch").link(:text=>"Filter results").click browser.div(:class=>"advancedSearch").link(:text=>"Filter results").click

end browser.input(:type=>"text",:id=>/search_query_top/).to_subtype.set(record['key']) browser.input(:type=>"text",:id=>/search_query_bottom/).to_subtype.set(record['key']) browser.input(:type=>"submit",:value=>/Search/).click

Page 50: Watir web automated tests

TEST SCENARIO 5

How to implement? (Step 3 -> Step 8) cont.

Step 3 -> Step 8 (cont.): #----validate search result logger.info ("SEARCH KEY #") + record['#'] + (": ") + record['key'] if browser.span(:class=>"search-term").text.upcase.include? record['key'].upcase logger.info ("- Search result included key word.") else logger.info ("- Search result NOT included key word.") end sleep 4 #Step 5: Select a presentation from this page and open it. id = browser.link(:class=>"download-link").id logger.info ("- Open link.") browser.link(:id=>id).focus browser.link(:id=>id).click logger.info ("=> Presentation page is displayed. Title: ") + browser.title

Page 51: Watir web automated tests

TEST SCENARIO 5

How to implement? (Step 3 -> Step 8) cont.

Step 3 -> Step 8 (cont.): #Step 6: Post a comment for this presentation Wait.until {browser.link(:class=>/sprite iconEmail j-tooltip/,:text=>/Email/) .exists?} if (browser.text.include? "Comments are closed.") logger.info ("=> Comments are closed, cannot post more comment.") else Wait.until {browser.link(:class=>"postCommentLink").exists?} browser.link(:class=>"postCommentLink").click browser.textarea(:class=>/post-comment/).set("cool!!!") logger.info ("- Post comment. Content: ") + browser.textarea(:class=>/post-comment/).value browser.input(:type=>"submit",:value=>/Post Comment/).click end

Page 52: Watir web automated tests

TEST SCENARIO 5

How to implement? (Step 3 -> Step 8) cont.

Step 3 -> Step 8 (cont.): #Step 7: Download this presentation if browser.span(:class=>/sprite iconNoDownload j-tooltip/,:text=>/Download/).exist? logger.info ("- Download is disabled by the author, so cannot download this file.") else browser.link(:class=>/sprite iconDownload j-tooltip/,:text=>/Download/).focus Thread.new { browser.link(:class=>/sprite iconDownload j-tooltip/,:text=>/Download/).click } sleep 4 wrauto = RAutomation::Window.new(:title => /File Download/i) wrauto.button(:value=>"&Save").click wrauto = RAutomation::Window.new(:title => /Save As/i) wrauto.button(:value=>"&Save").click logger.info ("- Start downloading.") sleep 80 #time wait for file downloading end

Page 53: Watir web automated tests

TEST SCENARIO 5

How to implement? (Step 3 -> Step 8) cont.

Step 3 -> Step 8 (cont.): #Step 8: Email this presentation browser.back browser.link(:class=>/sprite iconEmail j-tooltip/,:text=>/Email/).click Wait.until {browser.text.include? "to friends"} logger.info ("- Send email") browser.textarea(:id=>/message_to/).send_keys :enter browser.textarea(:id=>/message_to/).set ("[email protected]") logger.info ("-- To: ") + browser.textarea(:id=>"message_to").value browser.textarea(:id=>/message_body/).send_keys :enter browser.textarea(:id=>/message_body/).set ("I think you will find this useful. Pls refer.") logger.info ("-- Message: ") + browser.textarea(:id=>"message_body").value browser.input(:id=>"send-button", :type=>"submit").focus browser.input(:id=>"send-button", :type=>"submit").click logger.info ("-- Click 'Send' button.") Wait.until {browser.text.include? "Email sent."} logger.info ("=> Email sent.") end end

Page 54: Watir web automated tests

TEST SCENARIO 5

How to implement? (Step 9 -> Step 10)

Step 9: #Step 9: Click on Upload button logger.info ("Step 9: Click on Upload button") browser.link(:class=>"btn btn-primary", :text=>"Upload").focus browser.link(:class=>"btn btn-primary", :text=>"Upload").click logger.info ("=> Upload page is displayed.") logger.info ("=> Title: ") + browser.title

Step 10: #Step 10: Select presentation files from your computer and upload it to SlideShare logger.info ("Step 10: Select presentation files from your computer and upload it to SlideShare") browser.div(:class=>"upload_button nonprivate_button nonprivate_buttonExp").object(:id=>"SWFUpload_0").click win = RAutomation::Window.new(:title => /Select file/i) win.text_field.set ("D:\\Training Documents\\test_watir.pptx") logger.info ("- File path: ") + win.text_field.value win.button(:value=>"&Open").click logger.info ("=> File uploaded.") logger.info ("::::END TESTING")

Page 55: Watir web automated tests

TEST SCENARIO 5

How to implement? (END SCRIPT)

RUN SCRIPT

Page 56: Watir web automated tests

TEST SCENARIO 6

Test with Facebook page – Share info and chat

• Step 1: Open Internet Explorer

• Step 2: Navigate to http://www.facebook.com/ and sign in

• Step 3: Write a comment on your post

• Step 4: View Activity Log.

• Step 5: Click on Messages

• Step 6: Find an online friend and initialize a chat

• Step 7: Sign out

• Step 8: Repeat the test for Chrome and Firefox

Page 57: Watir web automated tests

TEST SCENARIO 6

How to implement? (START SCRIPT)

require "watir-webdriver" include Watir require 'logger' require File.dirname(__FILE__) + "/Xls“ #path store file: script, data file, logs… path = File.dirname(__FILE__) #create log file name_log = 'TEST_Scenario_6' file = File.open(path + '/logs/' + name_log + '_logFile.log', File::WRONLY | File::APPEND | File::CREAT) logger = Logger.new(file) #read data from data file xlFile = XLS.new(path + '/data/data_file.xlsx') #grab the data file in the same directory myData = xlFile.getRowRecords('A1:D3', 'login_fb') #pull data records from excel xlFile.close

Page 58: Watir web automated tests

TEST SCENARIO 6

How to implement? (Step 1 -> Step 2)

Step 1: #Step 1: Open Internet Explorer logger.info "::::" + name_log logger.info ("Step 1: Open Internet Explorer") browser = Watir::Browser.new :ie

Step 2: #Step 2: Navigate to http://www.facebook.com/ and sign in #----navigate to http://www.facebook.com/ logger.info ("Step 2: Navigate to http://www.facebook.com/ and sign in") test_site = 'http://www.facebook.com/' browser.goto(test_site) logger.info ("=> Window title: ") + browser.title #----sign in logger.info ("- Log in") myData.each do |record| browser.text_field(:id=>record['Element']).set(record['Input']) end browser.button(:text=>"Log In").click logger.info ("=> Window title: ") + browser.title

Page 59: Watir web automated tests

TEST SCENARIO 6

How to implement? (Step 4 -> Step 5)

Step 3: #Step 3: Write a comment on your post logger.info ("Step 4: Write a comment on your post") #----comment on the post browser. button(:value=>/Comment/).send_keys :enter #click Comment link sleep 4 browser.textarea(:name=>"add_comment_text_text").set("Hi!") #input comment browser.textarea(:name=>"add_comment_text_text").send_keys :enter #press enter key logger.info ("=> URL: " + browser.url)

Step 4: #Step 4: View Activity Log. logger.info ("Step 4: View Activity Log.") browser.send_keys :space browser.element.wd.location_once_scrolled_into_view browser.div(:class=>"mtm mlm").link(:href=>/allactivity/).click logger.info ("=> URL: " + browser.url)

Page 60: Watir web automated tests

TEST SCENARIO 6

How to implement? (Step 6 -> Step 7)

Step 5: #Step 5: Click on Messages logger.info ("Step 5: Click on Messages") browser.div(:id=>"fbMessagesJewel").click browser.div(:id=>"MercuryJewelFooter").click logger.info ("=> URL: " + browser.url)

Step 6: #Step 6: Find an online friend and initialize a chat logger.info ("Step 6: Find an online friend and initialize a chat") browser.div(:id=>"fbDockChatBuddylistNub").click online = browser.li(:class=>"item active") if online.exists? online.click browser.textarea(:class=>"uiTextareaAutogrow input").set("Hello") browser.textarea(:class=>"uiTextareaAutogrow input").send_keys :enter logger.info ("=> Chat with " + browser.div(:class=>"clearfix fbNubFlyoutTitlebar titlebar").text) else logger.info ("=> No one is available to chat.") end

Page 61: Watir web automated tests

TEST SCENARIO 6

How to implement? (Step 8)

Step 7: #Step 7: Sign out logger.info ("Step 8: Sign out") browser.link(:id=>"navAccountLink").click browser.button(:value=>"Log Out").click Wait.until {browser.text.include? "Sign Up"} logger.info ("=> Log out successfully.") logger.info "::::END TESTING" browser.close

Page 62: Watir web automated tests

TEST SCENARIO 6

How to implement? (END SCRIPT)

RUN SCRIPT

Page 63: Watir web automated tests