Package TestON :: Package drivers :: Package common :: Module webdriver
[hide private]
[frames] | no frames]

Source Code for Module TestON.drivers.common.webdriver

  1  #!/usr/bin/env python 
  2  ''' 
  3  Created on 27-Feb-2013 
  4       
  5  @authors: Anil Kumar (anilkumar.s@paxterrasolutions.com), 
  6             
  7  ''' 
  8  import pexpect 
  9  import struct, fcntl, os, sys, signal 
 10  import sys, re 
 11  sys.path.append("../") 
 12  from drivers.component import Component 
 13  from selenium import selenium 
 14  import unittest, time, re 
 15   
16 -class WebDriver(Component):
17 ''' 18 This will define common functions for CLI included. 19 '''
20 - def __init__(self):
21 super(Component, self).__init__()
22
23 - def __getattr__(self, name):
24 ''' 25 This will invoke, if the attribute wasn't found the usual ways. 26 Here it will look for assert_attribute and will execute when AttributeError occurs. 27 It will return the result of the assert_attribute. 28 ''' 29 try: 30 return getattr(self, name) 31 except AttributeError: 32 try: 33 def experimentHandling(*args): 34 result = self.selenium_method(name,*args) 35 return result
36 return experimentHandling 37 except TypeError,e: 38 main.log.error("Arguments for experimental mode does not have key 'retruns'" + e)
39
40 - def selenium_method(self,name,*args):
41 try : 42 self.logfile_handler.write("\n\t"+name + str(args) +"\n") 43 methodToCall = getattr(vars(self)['driver'], name) 44 result = methodToCall(*args) 45 return main.TRUE 46 except : 47 return main.FALSE
48
49 - def connect(self,**connectargs):
50 ''' 51 Connection will establish to the remote host using 52 ''' 53 for key in connectargs: 54 vars(self)[key] = connectargs[key] 55 56 self.name = self.options['name'] 57 try : 58 connect_result = super(WebDriver, self).connect() 59 url = main.componentDictionary[self.name]['url'] 60 host = main.componentDictionary[self.name]['host'] 61 selenium_port = main.componentDictionary[self.name]['selenium_port'] 62 self.driver= selenium(host, int(selenium_port), "*chrome",url) 63 self.driver.start() 64 self.driver.open("/") 65 self.verificationErrors = [] 66 main.log.info("Returning from connect "+str(main.TRUE)) 67 return main.TRUE 68 except : 69 return main.FALSE
70
71 - def search_bus(self):
72 try : 73 self.driver.click("id=search_submit_btn") 74 self.driver.wait_for_page_to_load("300000") 75 self.wait(10) 76 return main.TRUE 77 except : 78 return main.FALSE
79
80 - def select_bus(self):
81 try : 82 self.driver.click("//html/body/div[2]/div/div[2]/div/table/tbody/tr/td[2]/div/div/div/table/tbody/tr/td[6]/a/img") 83 self.wait(7) 84 self.wait_for_element("id=span_2_12") 85 self.wait(7) 86 return main.TRUE 87 except : 88 try : 89 self.driver.click("//html/body/div[2]/div/div[2]/div/table/tbody/tr/td[2]/div/table/tbody/tr/td[2]/div[2]/div/table/tbody/tr/td[4]/a/span") 90 self.wait(7) 91 self.driver.click("//html/body/div[2]/div/div[2]/div/table/tbody/tr/td[2]/div/div/div/table/tbody/tr/td[6]/a/img") 92 self.wait(7) 93 self.wait_for_element("id=span_2_12") 94 self.wait(7) 95 return main.TRUE 96 except : 97 return main.FALSE
98
99 - def select_seat(self):
100 try : 101 self.driver.click("id=span_2_12") 102 return main.TRUE 103 except : 104 return main.FALSE
105
106 - def fill_details(self,**details):
107 args = utilities.parse_args(["TITLE","PASSENGER_NAME","PASSENGER_AGE","DROP_OFF","EMAIL","PHONE_NUMBER","ID_CARD_NUMBER","ID_CARD_ISSUED","ADDRESS"],**details) 108 try : 109 self.driver.select("id=ticket_title_C3", "label="+args["TITLE"]) 110 self.driver.type("id=ticket_passenger_name_C3", args["PASSENGER_NAME"]) 111 self.driver.type("id=ticket_passenger_age_C3", args["PASSENGER_AGE"]) 112 self.driver.select("id=searchbus_drop_off", "label="+args["DROP_OFF"]) 113 self.driver.type("id=ticket_email", args["EMAIL"]) 114 self.driver.type("id=ticket_phone_number", args['PHONE_NUMBER']) 115 self.driver.type("id=id_card_number", args['ID_CARD_NUMBER']) 116 self.driver.type("id=id_card_issued_details",args['ID_CARD_ISSUED'] ) 117 self.driver.type("id=ticket_address", args['ADDRESS']) 118 self.driver.click("id=terms_conditions") 119 return main.TRUE 120 except : 121 return main.FALSE
122
123 - def deselect_seat(self):
124 try : 125 self.wait(10) 126 self.driver.click("id=span_2_12") 127 self.driver.stop() 128 return main.TRUE 129 except : 130 return main.FALSE
131
132 - def wait_for_element(self,element):
133 main.log.info("Waiting for element "+ element) 134 try : 135 for i in range(60): 136 try: 137 if self.driver.is_element_present(element): 138 break 139 except: 140 pass 141 time.sleep(1) 142 else: 143 main.log.error("Time out : "+element +"Not present") 144 return main.FALSE 145 return main.TRUE 146 except : 147 return main.FALSE
148
149 - def wait(self,secs):
150 main.log.info("Waiting for page to load") 151 time.sleep(secs) 152 return main.TRUE
153
154 - def disconnect(self):
155 main.log.info("Disconnecting from WebDriver") 156 #result = super(WebDriver, self).disconnect(self) 157 main.log.info("Stopping Selenium") 158 #self.driver.stop() 159 #utilities.assert_equal([], self.verificationErrors) 160 result = main.TRUE
161 #self.execute(cmd="exit",timeout=120,prompt="(.*)") 162