Last active
August 29, 2015 14:25
-
-
Save sholfen/12c1bb3d69f31363999f to your computer and use it in GitHub Desktop.
Web Automation for WalkieTicket
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'rubygems' | |
require 'selenium-webdriver' | |
require_relative 'WebModule' | |
require_relative 'web_class.rb' | |
def buyTicket driver | |
#test url1: 'http://www.walkieticket.com/product.aspx?P1=0000003817' | |
#frip side: 'http://www.walkieticket.com/product.aspx?P1=0615231106' | |
#frip side2: http://www.walkieticket.com/order.aspx?P1=0615231106&P2=&P3=&P4=&P5=0&P9=0,0,0,0,0 | |
ticketUri = 'http://www.walkieticket.com/order.aspx?P1=0615231106&P2=&P3=&P4=&P5=0&P9=0,0,0,0,0' | |
areaCount = 1 #for map, start from 1 | |
dropDownListIndex = '0' #場次, start from 0 | |
driver.get ticketUri | |
#select ticket price | |
dropDownListId = 'ctl00_ContentPlaceHolder1_ListView1_ctrl' + dropDownListIndex + '_DropDownList1' | |
select = Selenium::WebDriver::Support::Select.new(driver.find_element(:id,dropDownListId)) | |
select.select_by(:index, 1) | |
clickArea = driver.find_elements :tag_name, 'a' | |
#find 'select seat' url | |
clickArea.each { |url| | |
orderUrl = url.attribute('href') | |
if orderUrl.include? 'order2' | |
url.click | |
puts orderUrl | |
break | |
end | |
} | |
#if not on sale, go back | |
#此節目尚未開放售票,預售日期為 2015/06/06 11:00 | |
#goback = driver.find_element(:partial_link_text, '此節目尚未開放售票,預售日期為 2015/06/06 11:00') | |
goback = driver.find_elements(:class_name, 'cookie-tip-wline') | |
if goback.size != 0 | |
puts 'goback' | |
return 1 | |
end | |
puts 'goback is null' | |
#select area | |
maps = clickArea = driver.find_elements :tag_name, 'area' | |
count = 0 | |
maps.each { |url| | |
orderUrl = url.attribute('href') | |
if orderUrl.include? 'order3.aspx' | |
count = count + 1 | |
#url.click | |
#puts orderUrl | |
if count == areaCount | |
driver.get orderUrl | |
break | |
end | |
end | |
} | |
#tick type: ctl00_ContentPlaceHolder1_MysSelOne | |
select = Selenium::WebDriver::Support::Select.new(driver.find_element(:id,'ctl00_ContentPlaceHolder1_MysSelOne')) | |
select.select_by(:index, 1) | |
#count: Tks | |
select = Selenium::WebDriver::Support::Select.new(driver.find_element(:name,'Tks')) | |
select.select_by(:index, 3) #buy two tickets | |
#click next step | |
WebModule.ClickById driver, 'ctl00_ContentPlaceHolder1_ImageButton1' | |
#Delivery Method(radio button) | |
WebModule.ClickById driver, 'ctl00_ContentPlaceHolder1_way7' | |
#pyament(radio button) | |
creidCardPyament = driver.find_elements(:name, 'payradio') | |
creidCardPyament[1].click | |
#ula(check box) | |
#chkReadConfirm | |
WebModule.ClickById driver, 'chkReadConfirm' | |
WebModule.ClickById driver, 'ctl00_ContentPlaceHolder1_ImageButton1' | |
#next step, fill creid card form | |
#name | |
WebModule.SetTextById driver, 'ctl00_ContentPlaceHolder1_CardUser', 'Your name' | |
#card number | |
WebModule.SetTextById driver, 'ctl00_ContentPlaceHolder1_CardNo', '0000' | |
WebModule.SetTextById driver, 'ctl00_ContentPlaceHolder1_CardNo1', '0000' | |
WebModule.SetTextById driver, 'ctl00_ContentPlaceHolder1_CardNo2', '0000' | |
WebModule.SetTextById driver, 'ctl00_ContentPlaceHolder1_CardNo3', '0000' | |
#year and month | |
select = Selenium::WebDriver::Support::Select.new(driver.find_element(:id,'ctl00_ContentPlaceHolder1_ChinatrustMonth')) | |
select.select_by(:index, 1) | |
select = Selenium::WebDriver::Support::Select.new(driver.find_element(:id,'ctl00_ContentPlaceHolder1_ChinatrustYear')) | |
select.select_by(:index,1) | |
WebModule.SetTextById driver, 'ctl00_ContentPlaceHolder1_cvv2', '000' | |
#confirm payment | |
WebModule.ClickById driver, 'ctl00_ContentPlaceHolder1_ImageButton2' | |
puts "Page title is #{driver.title}" | |
puts 'end' | |
return 0 | |
end | |
driver = Selenium::WebDriver.for :chrome | |
#login | |
driver.get 'https://www.walkieticket.com/member-unlogin.aspx' | |
WebModule.SetTextById driver, 'ctl00_ContentPlaceHolder1_Login_Name', 'F120000000' | |
WebModule.SetTextById driver, 'ctl00_ContentPlaceHolder1_Login_Pass', 'password' | |
WebModule.ClickById driver, 'ctl00_ContentPlaceHolder1_ImageButton1' | |
command = 0 | |
print 'Press any key to start: ' | |
start = gets | |
print start | |
while command == 0 | |
returnValue = buyTicket driver | |
sleep 3 if returnValue == 1 | |
if returnValue != 1 | |
print 'Reload?: ' | |
commandStr = gets | |
command = commandStr.to_i | |
end | |
puts command | |
end | |
puts 'program is end.' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment