/
TransitSubsidyApp.py
120 lines (83 loc) · 5.01 KB
/
TransitSubsidyApp.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
__author__ = 'CFPB Labs'
import time
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from nose.tools import *
class TransitSubsidyApp():
"""
Abstration of the Transit Subsidy application. This extends the
WebDriver Page model pattern (http://code.google.com/p/selenium/wiki/PageObjects)
and applies to the application as a whole rather than a single page state.
note_to_self: one or more page objects could comprise a application object, which,
more or less, could serve as a testing facade.
"""
def __init__(self,driver,base_url):
self.driver = driver
self.base_url = base_url
def reset(self):
self.driver.find_element_by_link_text('Reset Form').click()
def login(self, username="ted", password="ted" ):
self.driver.get( self.base_url + "/login/")
eq_("Your Intranet >", self.driver.title)
self.driver.find_element_by_id("id_username").clear()
self.driver.find_element_by_id("id_username").send_keys(username)
self.driver.find_element_by_id("id_password").clear()
self.driver.find_element_by_id("id_password").send_keys(password)
self.driver.find_element_by_id("btn_login").click()
eq_("Your Intranet > Transit Subsidy Request", self.driver.title)
def logout(self):
driver.get(base_url + "/logout/")
def commute_from( self, street='123 Main St', city='Anytown', state="VA", zip="62312" ):
self.driver.find_element_by_id("id_origin_street").clear()
self.driver.find_element_by_id("id_origin_street").send_keys(street)
self.driver.find_element_by_id("id_origin_city").clear()
self.driver.find_element_by_id("id_origin_city").send_keys(city)
self.driver.find_element_by_id("id_origin_state").clear()
self.driver.find_element_by_id("id_origin_state").send_keys(state)
self.driver.find_element_by_id("id_origin_zip").clear()
self.driver.find_element_by_id("id_origin_zip").send_keys(zip)
def commute_to(self, destination_id=2):
self.driver.find_element_by_id("id_destination").find_elements_by_tag_name('option')[destination_id].click()
def add_segment(self, segment_id,mode_id,amount,add_another=False):
self.driver.find_element_by_id("segment-type_%s" % segment_id).find_elements_by_tag_name('option')[mode_id].click()
self.driver.find_element_by_id("segment-amount_%s" % segment_id).clear()
self.driver.find_element_by_id("segment-amount_%s" % segment_id).send_keys(amount)
if add_another: self.driver.find_element_by_id("add_%s" % segment_id).click()
def add_other_segment(self, segment_id, other_text, amount, add_another=False):
self.driver.find_element_by_id("segment-type_%s" % segment_id).find_elements_by_tag_name('option')[17].click()
time.sleep(1)
self.driver.find_element_by_id("segment-other_%s" % segment_id).send_keys(other_text)
self.driver.find_element_by_id("segment-amount_%s" % segment_id).clear()
self.driver.find_element_by_id("segment-amount_%s" % segment_id).send_keys(amount)
if add_another: self.driver.find_element_by_id("add_%s" % segment_id).click()
def remove_segment(self,segment_id):
self.driver.find_element_by_id('rm_%s' % segment_id).click()
def click_add(self):
self.driver.find_element_by_id('add_1').click()
def select_workdays(self, id=2, other=None):
self.driver.find_element_by_xpath("(//input[@id='id_work_sked'])[%s]" % id).click()
if id==4:
self.driver.find_element_by_id('id_number_of_workdays').clear()
self.driver.find_element_by_id('id_number_of_workdays').send_keys(other)
def view_smartriphelp(self):
self.driver.find_element_by_id("id_help_smartrip").click()
self.driver.find_element_by_id("cboxClose").click()
def add_smartrip(self, num='00020 0001 5644 364 6'):
self.driver.find_element_by_id("id_dc_wmta_smartrip_id").clear()
self.driver.find_element_by_id("id_dc_wmta_smartrip_id").send_keys(num)
def enroll(self):
self.driver.find_element_by_id("btn_enroll_smartrip").click()
time.sleep(.5)
def sign(self, last_four_ssn='1234', signature='Mick Jagger'):
self.driver.find_element_by_id("id_last_four_ssn").send_keys(last_four_ssn)
self.driver.find_element_by_id("id_signature").send_keys(signature)
self.driver.find_element_by_id("btn_agree").click()
time.sleep(.5)
eq_("Your Intranet > Transit Subsidy Confirmation", self.driver.title)
def dont_sign(self):
self.driver.find_element_by_id("btn_no_agree").click()
eq_("Your Intranet > Transit Subsidy Request", self.driver.title)