Automatic flight ticket script

Categories: Python, Web

python script  to demonstrate  the splinter library

this script keep searching till finding a ticket and book it  🙂

rest and wait your reservation number

#!/usr/bin/env python
from splinter import Browser
from time import sleep
from sys import exit



def checkoneway():
	browser = Browser()
	url = 'http://www.bookonline.saudiairlines.com'
	browser.visit(url)
	browser.find_by_name('TRIP_TYPE')[2].click()  # one way trip
	browser.fill('WDS_B_LOCATION_1_DISPLAY' , 'Dammam') #from 
	browser.fill('WDS_E_LOCATION_1_DISPLAY' , 'Riyadh') #to
	browser.select('onlineCalendar_0Day','09')  #day to reave
	browser.select('onlineCalendar_0MonthYear','082014')  #month year of travel 
	browser.select('CABIN','E')  #travel class
	browser.check('IS_FLEXIBLE')  #checling flexable 
	browser.select('WDS_NB_ADT','2')  # how many travels  
	browser.select('WDS_NB_CHD','2')  # how many childenrs
	browser.find_by_id("onlineSubmit").click()
	busy = "Flights out are not available for the date / time specified. However, you can see flights for alternate days by selecting other dates below"
	while browser.is_text_present(busy):
		browser.quit()
		checkoneway()
	if browser.is_text_present("Sorry, but your session has timed out. Please start again"):
		browser.quit()
		checkoneway()
	
	browser.find_by_id("b0FO0_PREMIUMEDRadioEl")[0].click()

	#form submition
	browser.execute_script("theOcupForm.submit()")

	#passenger 1
	browser.select('TITLE_1','MR')
	browser.fill('FIRST_NAME_1','Ahmed') #first name
	browser.fill('LAST_NAME_1','Ibrahim') #lastname
	browser.select("NATIONALITY_1",'SA')

	#passenger2
	browser.select('TITLE_2','MS')
	browser.fill('FIRST_NAME_2','Ahmed')  #first name
	browser.fill('LAST_NAME_2','Ibrahim') #lastname
	browser.select("NATIONALITY_2",'SA')

	#kid 1 info
	browser.select('TITLE_3','MTR')  #childern male
	browser.fill('FIRST_NAME_3','Omar')  #first name
	browser.fill('LAST_NAME_3','Ezz') #last namr
	browser.select("NATIONALITY_3",'SA') #nationality 
	browser.select("dateOfBirthDay3", '10')  
	browser.select("dateOfBirthMonth3", '05')
	browser.select("dateOfBirthYear3", '2012')	

	#kid 2 info
	browser.select('TITLE_4','MISS')  #childern female
	browser.fill('FIRST_NAME_4','Omnia') #first name
	browser.fill('LAST_NAME_4','Ezz') #last name
	browser.select("NATIONALITY_4",'SA')
	browser.select("dateOfBirthDay4", '09')
	browser.select("dateOfBirthMonth4", '05')
	browser.select("dateOfBirthYear4", '2012')

	#phone and email confirmation
	browser.select("TEL_1_TYPE",'MOB')
	browser.select("TEL_1_COUNTRY_CODE",'+966')
	browser.fill("TEL_1_NUMBER","01002020794")
	browser.select("TEL_2_TYPE","RES")
	browser.select("TEL_2_COUNTRY_CODE",'+20')
	browser.fill("TEL_2_NUMBER","01000000001")
	browser.fill("CONTACT_POINT_EMAIL_1",'root@mail.com')
	browser.fill("WDS_CONFIRM_EMAIL_1",'root@mail.com')
	browser.check("WDS_SAVE_COOKIE")
	browser.execute_script("theALPIForm.submit()")
	browser.execute_script("thePURCForm.selectPaymentType('Sadad')")
	browser.check("WDS_CONDITIONS")
	browser.execute_script("thePURCForm.submit()")

	data = str(browser.html)
	for line in data.readlines():
		if "recordLocator" in line:
			print line.split("recordLocator")[1].replace("</span>", "").replace("\">","")


if __name__ == "__main__":

	checkoneway()


 

«
»

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.