Advertisement
marksweb

seleniumViewEmployeeTest

Jul 17th, 2012
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.36 KB | None | 0 0
  1. """
  2. @author: markw
  3.  
  4. Unit test approach to Selenium testing. Process ran from ANT with sys args:
  5.     - File name e.g. viewEmployeeUnitTest.py
  6.     - revision number
  7. """
  8.  
  9. from selenium import selenium, webdriver
  10. from selenium.webdriver.support.ui import WebDriverWait
  11. import shutil, time, sys, os, unittest
  12. from resources import utils
  13.  
  14. class viewEmployeeUseCase(unittest.TestCase):
  15.     def setUp(self):
  16.         images_root = '\Documents and Settings\markw\GitTest\images'
  17.         revisionNumber = sys.argv[1]
  18.         images_process = 'View_Employee_Use_Case'
  19.         self.imagesPath = utils.setupFolders(images_root,revisionNumber,images_process)
  20.        
  21.         self.ff = webdriver.Firefox()
  22.         utils.loadFirefox(self.ff, "Basic Tools")
  23.  
  24.     def test_process(self):
  25.         WebDriverWait(self.ff, 50).until(lambda driver : driver.find_element_by_xpath("//div[@class='menuContainer']"))
  26.  
  27.         # Find and click the Employer Database link
  28.         WebDriverWait(self.ff, 50).until(lambda driver : driver.find_element_by_xpath("//h1[@class='home_page_descr']"))
  29.         self.ff.find_element_by_xpath("//a[@id='strmos9871338']").click()   # Employer Database header link
  30.  
  31.         # Check the menu has loaded and click the Employee menu
  32.         WebDriverWait(self.ff, 50).until(lambda driver : driver.find_element_by_xpath("id('employeesHeader')")).click()
  33.  
  34.         dropdown = self.ff.find_element_by_id('employeeDatabaseSelect')
  35.         for option in dropdown.find_elements_by_tag_name('option'):
  36.             try:
  37.                 option.click()  # causes JS refresh which you need to wait for
  38.             except Exception, e:
  39.                 print 'Exception ', e
  40.         else: sys.exit("Error: There are no employees for this employer")
  41.         print 'Dropdown: ', dropdown.getText()
  42.         WebDriverWait(self.ff, 50).until(lambda driver : driver.find_element_by_xpath("//h2[contains(text(), dropdown.getText())"))
  43.  
  44.         # wait for option.text to be in rightcol h2
  45.         WebDriverWait(self.ff, 50).until(lambda driver : driver.find_element_by_link_text('Employee Details'))
  46.         # Find and click the Employee details section
  47.         self.ff.find_element_by_link_text('Employee Details').click()
  48.  
  49.         self.ff.find_element_by_link_text('- View / Edit Employee Details').click()
  50.         WebDriverWait(self.ff, 2)
  51.         n = utils.getStage(self.ff)
  52.         utils.screenshot(n, self.imagesPath, self.ff)
  53.  
  54.         WebDriverWait(self.ff, 5).until(lambda driver : driver.find_element_by_xpath("//div[@class='menuContainer']"))
  55.         WebDriverWait(self.ff, 5).until(lambda driver : driver.find_element_by_xpath("//div[@class='accordionContainer']"))
  56.  
  57.         # JS execution test
  58.         #token = self.ff.execute_script("return HMRC.gettoken()");
  59.         #print token
  60.  
  61.         detailsAccordion = self.ff.find_elements_by_class_name('accordion')
  62.         index = 1
  63.         for option in detailsAccordion:
  64.             try:
  65.                 WebDriverWait(self.ff, 2).until(lambda driver : driver.find_element_by_xpath("id('main_content')/div[3]/div/div/div["+ str(index) +"]/h3[1]")).click()
  66.                 time.sleep(1)   # avoid these
  67.                 n = utils.getStage(self.ff)
  68.                 utils.screenshot(n, self.imagesPath, self.ff)
  69.                 WebDriverWait(self.ff, 2).until(lambda driver : driver.find_element_by_xpath("id('main_content')/div[3]/div/div/div["+ str(index) +"]/h3[1]")).click()
  70.             except:
  71.                 print "Can't access div #" + index
  72.             index = index + 1
  73.  
  74.     def tearDown(self):
  75.         print 'Tearing Down!'
  76.         self.ff.quit()
  77.  
  78. if __name__ == '__main__':
  79.     test = unittest.TestLoader().loadTestsFromTestCase(viewEmployeeUseCase)
  80.     unittest.TextTestRunner(verbosity=2).run(test)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement