Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- @author: markw
- Unit test approach to Selenium testing. Process ran from ANT with sys args:
- - File name e.g. viewEmployeeUnitTest.py
- - revision number
- """
- from selenium import selenium, webdriver
- from selenium.webdriver.support.ui import WebDriverWait
- import shutil, time, sys, os, unittest
- from resources import utils
- class viewEmployeeUseCase(unittest.TestCase):
- def setUp(self):
- images_root = '\Documents and Settings\markw\GitTest\images'
- revisionNumber = sys.argv[1]
- images_process = 'View_Employee_Use_Case'
- self.imagesPath = utils.setupFolders(images_root,revisionNumber,images_process)
- self.ff = webdriver.Firefox()
- utils.loadFirefox(self.ff, "Basic Tools")
- def test_process(self):
- WebDriverWait(self.ff, 50).until(lambda driver : driver.find_element_by_xpath("//div[@class='menuContainer']"))
- # Find and click the Employer Database link
- WebDriverWait(self.ff, 50).until(lambda driver : driver.find_element_by_xpath("//h1[@class='home_page_descr']"))
- self.ff.find_element_by_xpath("//a[@id='strmos9871338']").click() # Employer Database header link
- # Check the menu has loaded and click the Employee menu
- WebDriverWait(self.ff, 50).until(lambda driver : driver.find_element_by_xpath("id('employeesHeader')")).click()
- dropdown = self.ff.find_element_by_id('employeeDatabaseSelect')
- for option in dropdown.find_elements_by_tag_name('option'):
- try:
- option.click() # causes JS refresh which you need to wait for
- except Exception, e:
- print 'Exception ', e
- else: sys.exit("Error: There are no employees for this employer")
- print 'Dropdown: ', dropdown.getText()
- WebDriverWait(self.ff, 50).until(lambda driver : driver.find_element_by_xpath("//h2[contains(text(), dropdown.getText())"))
- # wait for option.text to be in rightcol h2
- WebDriverWait(self.ff, 50).until(lambda driver : driver.find_element_by_link_text('Employee Details'))
- # Find and click the Employee details section
- self.ff.find_element_by_link_text('Employee Details').click()
- self.ff.find_element_by_link_text('- View / Edit Employee Details').click()
- WebDriverWait(self.ff, 2)
- n = utils.getStage(self.ff)
- utils.screenshot(n, self.imagesPath, self.ff)
- WebDriverWait(self.ff, 5).until(lambda driver : driver.find_element_by_xpath("//div[@class='menuContainer']"))
- WebDriverWait(self.ff, 5).until(lambda driver : driver.find_element_by_xpath("//div[@class='accordionContainer']"))
- # JS execution test
- #token = self.ff.execute_script("return HMRC.gettoken()");
- #print token
- detailsAccordion = self.ff.find_elements_by_class_name('accordion')
- index = 1
- for option in detailsAccordion:
- try:
- 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()
- time.sleep(1) # avoid these
- n = utils.getStage(self.ff)
- utils.screenshot(n, self.imagesPath, self.ff)
- 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()
- except:
- print "Can't access div #" + index
- index = index + 1
- def tearDown(self):
- print 'Tearing Down!'
- self.ff.quit()
- if __name__ == '__main__':
- test = unittest.TestLoader().loadTestsFromTestCase(viewEmployeeUseCase)
- unittest.TextTestRunner(verbosity=2).run(test)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement