Skip to content

Instantly share code, notes, and snippets.

@mlimaloureiro
Last active August 29, 2015 14:03
Show Gist options
  • Save mlimaloureiro/4abc1e250c17a17f023c to your computer and use it in GitHub Desktop.
Save mlimaloureiro/4abc1e250c17a17f023c to your computer and use it in GitHub Desktop.
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
"""
Inserir inputs
"""
configs = {}
# url da listing que querem preencher
configs['listingUrl'] = "http://spa.dev/Lisbon/Cool-Studio-Apartment-in-a-Multicultural-area-of-Lisbon_11026_listing.html"
# move in e move out
configs['moveIn'] = "02-10-2015"
configs['moveOut'] = "02-11-2015"
# quarto ou propriedade [room, property]
# isto e para ver se ele tem que fazer o passo
# adicional de escolher o quarto
configs['type'] = "property"
# se for do tipo room, escolhe qual o numero do quarto
configs['roomNumber'] = 1
# ------- student details --------
configs['name'] = "Miguel Loureiro"
configs['email'] = "[email protected]"
configs['phone'] = "911951249"
configs['nationality'] = "PT"
configs['gender'] = "m"
configs['birthDateYear'] = "1990"
configs['birthDateMonth'] = "5"
configs['birthDateDay'] = "8"
# options [undergraduate, postgraduate, summer_school, internship, professional_placement, other]
configs['purposeOfStay'] = 'undergraduate'
configs['checkEmail'] = True
configs['checkPaymentTerms'] = True
configs['checkAgreePolicy'] = True
# promocode
configs['promocode'] = ''
"""
Automate code
"""
driver = webdriver.Firefox()
driver.get(configs['listingUrl'])
driver.find_element_by_id('move_in_date_ui').send_keys(configs['moveIn'])
driver.find_element_by_id('move_out_date_ui').send_keys(configs['moveOut'])
if configs['type'] == "room":
driver.find_element_by_id('room_' + str(configs['roomNumber'])).click()
try:
element = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, "#prices .orange-button"))
)
finally:
driver.find_element_by_css_selector('#prices .orange-button').click()
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "uniplaces_student_info_name"))
)
finally:
driver.find_element_by_id('uniplaces_student_info_name').send_keys(configs['name'])
driver.find_element_by_id('uniplaces_student_info_email').send_keys(configs['email'])
driver.find_element_by_id('uniplaces_student_info_phone').send_keys(configs['phone'])
select = Select(driver.find_element_by_id("uniplaces_student_info_nationality"))
select.select_by_value(configs['nationality'])
select = Select(driver.find_element_by_id("uniplaces_student_info_gender"))
select.select_by_value(configs['gender'])
select = Select(driver.find_element_by_id("uniplaces_student_info_dateBirth_year"))
select.select_by_value(configs['birthDateYear'])
select = Select(driver.find_element_by_id("uniplaces_student_info_dateBirth_month"))
select.select_by_value(configs['birthDateMonth'])
select = Select(driver.find_element_by_id("uniplaces_student_info_dateBirth_day"))
select.select_by_value(configs['birthDateDay'])
select = Select(driver.find_element_by_id("uniplaces_student_info_studentType"))
select.select_by_value(configs['purposeOfStay'])
if configs['checkEmail']:
driver.find_element_by_id('uniplaces_student_info_emailCampaign').click()
if configs['checkPaymentTerms']:
driver.find_element_by_id('uniplaces_student_info_readPaymentTerms').click()
if configs['checkAgreePolicy']:
driver.find_element_by_id('uniplaces_student_info_agreeTermsOfUse').click()
if configs['promocode']:
driver.find_element_by_id('promoCodeInput').send_keys(configs['promocode'])
driver.find_element_by_id('submitPromoCode').click()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment