def set_up(self,browser_name): log = logger() cmd = "netstat -an | grep '4444'|awk '{print $6}'" dir_path = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)) browser_name = browser_name.decode('utf-8').lower() try: if browser_name == 'chrome': browser = webdriver.Chrome() elif browser_name == 'safari': subprocess.Popen(["java", "-jar",dir_path+"/Selenium/selenium-server-standalone-2.48.2.jar"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) output = commands.getoutput(cmd) while 1: if output == '': time.sleep(1) output = commands.getoutput(cmd) else : break browser = webdriver.Remote(desired_capabilities=webdriver.DesiredCapabilities.SAFARI) else: browser = webdriver.Firefox() return browser except Exception as er: pid = commands.getoutput("ps -eaf|grep -i 'selenium'|grep -v grep|awk '{print $2}'") if len(pid) != 0: log.log("[+] Force killing the process with signal at the beginning of testing") os.system("kill -9 "+ pid) log.log("[-] Error occur @set_up") log.log("[-] The Error is set up browser driver failed, details is "+str(er)) sys.exit()
def set_up(self,browser_name): log = logger() cmd = "netstat -an | grep '4444'|awk '{print $6}'" dir_path = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)) browser_name = browser_name.decode('utf-8').lower() try: if browser_name == 'chrome': browser = webdriver.Chrome() elif browser_name == 'safari': subprocess.Popen(["java", "-jar",dir_path+"/Selenium/selenium-server-standalone-2.48.2.jar"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) output = commands.getoutput(cmd) while 1: if output == '': time.sleep(1) output = commands.getoutput(cmd) else : break browser = webdriver.Remote(desired_capabilities=webdriver.DesiredCapabilities.SAFARI) else: fp = webdriver.FirefoxProfile() fp.set_preference("network.proxy.type", 2) fp.set_preference("network.proxy.autoconfig_url", "http://*****:*****@set_up") log.log("[-] The Error is set up browser driver failed, details is "+str(er)) sys.exit()
def get_user_email_address(self): log = logger() driver = self.driver try: email_address = driver.by_class_name(repo["login_email_address"]).text return str(email_address).lower() except Exception as e: log.log("[-] Error occur @get_user_email_address") log.log("[-] Error is " + str(e))
def logout(self): log = logger() driver = self.driver try: driver.by_link_text(repo["logout"]).click() time.sleep(2) except Exception as e: log.log("[-] Error occur @logout") log.log("[-] Error is " + str(e))
def navigate_to_help(self): log = logger() driver = self.driver try: driver.by_link_text(repo["navigation_help"]).click() time.sleep(3) except Exception as e: log.log("[-] Error occur @navigate_to_help") log.log("[-] Error is " + str(e))
def navigate_to_hao123(self): log = logger() driver = self.driver try: Element(driver,'HomePage','Hao123').get().click() time.sleep(3) except Exception as e: log.log('[-] Error occur @navigate_to_hao123') log.log('[-] Error is '+str(e))
def navigate_to_notification_group(self): log = logger() driver = self.driver try: driver.by_link_text(repo['navigation_notification_group']).click() time.sleep(3) except Exception as e: log.log('[-] Error occur @navigate_to_notification_group') log.log('[-] Error is '+str(e))
def navigate_to_home(self): log = logger() driver = self.driver try: driver.by_link_text(repo['navigation_home']).click() time.sleep(2) except Exception as e: log.log('[-] Error occur @navigate_to_home') log.log('[-] Error is '+str(e))
def navigate_to_sub_links(self, link_text): log = logger() driver = self.driver try: driver.by_link_text(repo["navigation_request_cert"]).click() driver.by_partial_link_text(link_text).click() time.sleep(2) except Exception as er: log.log("[-] Error occur @navigate_to_sub_menu") log.log("[-] Error is " + str(er))
def search(self,search_text): log = logger() driver = self.driver try: Element(driver,'HomePage','Search').get().send_keys(search_text) time.sleep(1) Element(driver,'HomePage','BaiDu').get().click() except Exception as e: log.log('[-] Error occur @search') log.log('[-] Error is '+str(e))
def kill_selenium_process(self): pid = commands.getoutput("ps -eaf|grep -i 'selenium'|grep -v grep|awk '{print $2}'") log = logger() try: log.log("[+] Kill the running selenium process") os.system('kill -9 '+pid) except Exception as er: if len(pid) !=0: log.log("[-] Failed to kill the process but force it to") log.log("[-] Error is "+str(er)) os.system('kill -9 '+pid)
def login_as(self,username='',password=''): log = logger() driver = self.driver try: driver.by_id(repo['username']).send_keys(username) driver.by_id(repo['password']).send_keys(password) driver.by_xpath(repo['login_submit']).click() time.sleep(3) except Exception as e: log.log('[-] Error occur @login_as') log.log('[-] Error is '+str(e))
def navigate_to_sub_menu(self, sub_menu_name): log = logger() driver = self.driver try: driver.by_link_text(repo["navigation_request_cert"]).click() sub_menu_lists = driver.find_elements_by_xpath(repo["certificate_requests"]) for sub_menu_item in sub_menu_lists: sub_menu_innerHTML = sub_menu_item.text.encode("utf-8").lower() if sub_menu_innerHTML == sub_menu_name.lower(): sub_menu_item.click() time.sleep(2) break except Exception as er: log.log("[-] Error occur @navigate_to_sub_menu") log.log("[-] Error is " + str(er))
class EndToEndModule(__init__): log = logger() @classmethod def setUpClass(cls): try: super(EndToEndModule, cls).setUpClass() except Exception: cls.log.log( '[+] Trying to start a webdriver but not the first one') cls.DRIVER = ControllerRunner.Runner('chrome') cls.DRIVER.open(__init__.url) @classmethod def tearDownClass(cls): super(EndToEndModule, cls).tearDownClass() def setUp(self): self.suite_name = "%s.%s" % (self.__class__.__module__, self.__class__.__name__) self.case_name = self.id().split('.')[-1] self.now_handle = self.DRIVER.get_window_handle() def test_search(self): try: self.DRIVER.search('selenium') self.assertIn('selenium', self.DRIVER.get_title()) TestResult().addSuccess(self.suite_name, 0, self.case_name, '') except AssertionError as ae: TestResult().addFail(self.suite_name, 1, self.case_name, str(ae)) except Exception as e: TestResult().addError(self.suite_name, 2, self.case_name, str(e)) def tearDown(self): pass
def __init__(self,browser): Base.__init__(self,browser) self.log = logger()