def count_tr(self): Service.wait_until_element_is_visible(self.driver, By.CSS_SELECTOR, '#attendace-result > tbody') find_tr = self.driver.find_element_by_css_selector( "#attendace-result > tbody").find_elements_by_tag_name("tr") sum_tr = len(find_tr) return sum_tr
def do_login(self, base_config_path, login_data): Service.open_page(self.driver, base_config_path) self.input_uname(login_data['username']) self.input_upass(login_data['password']) self.input_code(login_data['code']) self.click_button()
def em_real_interview(self, enterprise, jobs, em_interview_time, em_interview_feedback): self.driver.find_element_by_link_text('真实面试').click() # 企业名称 Service.box_xpath_click( self.driver, '/html/body/div[9]/div/div/div[2]/div/div/div[2]/div/div[2]/form/div[1]/' 'div/button/span[1]', enterprise) # 面试岗位 Service.box_xpath_click( self.driver, '/html/body/div[9]/div/div/div[2]/div/div/div[2]/div/div[2]/form/div[2]/select', jobs) # 面试时间 interview_time = self.driver.find_element_by_id('reatime') Service.send_input(interview_time, em_interview_time) # 反馈 interview_feedback = self.driver.find_element_by_id('rearemark') Service.send_input(interview_feedback, em_interview_feedback) # 保存 Service.click_id(self.driver, 'saveEditRBtn')
def input_start_time(self,start_time): ele = self.driver.find_element_by_css_selector('#leave-form > div:nth-child(2) > div:nth-child(1) > input') js = 'document.querySelector("#leave-form > div:nth-child(2) > div:nth-child(1) > input").value="";' ele.click() self.driver.execute_script(js) Service.send_input(ele,start_time) ele.send_keys(Keys.ENTER)
def click_undo_btn(self): Service.wait_until_element_is_visible( self.driver, By.CSS_SELECTOR, '#apply-table > tbody > tr:nth-child(1) > ' 'td:nth-child(12) > button') self.driver.find_element_by_css_selector('#apply-table > tbody > tr:nth-child(1) > td:nth-child(12) > button').\ click()
def input_name(self, name): Service.wait_until_element_is_visible(self.driver, By.CSS_SELECTOR, '#class-table > tbody') ele = self.driver.find_element_by_css_selector( '#cmDiv > div.col-lg-8.col-md-8.col-sm-12.col-xs-12.' 'con-body-padding.text-left > input[type=text]') Service.send_input(ele, name)
def random_click_interview_btn(self): Service.wait_until_element_is_visible(self.driver,By.CSS_SELECTOR,'#stuInfo_table > tbody') find_tr = self.driver.find_element_by_css_selector("#stuInfo_table > tbody").find_elements_by_tag_name("tr") sum_tr = len(find_tr) import random self.driver.find_element_by_css_selector('#stuInfo_table > tbody > tr:nth-child(%d) > ' 'td:nth-child(9) > button' % (random.randint(1, sum_tr - 1))).click()
def input_end_time(self,e_timr): ele = self.driver.find_element_by_css_selector('#addcourse > div > div:nth-child(2) > input') js = 'document.querySelector("#addcourse > div > div:nth-child(2) > input").value="";' ele.click() self.driver.execute_script(js) Service.send_input(ele, e_timr) ele.send_keys(Keys.ENTER)
def select_class(self, class_name): Service.wait_until_element_is_visible(self.driver, By.CSS_SELECTOR, '#exam-table > tbody') Service.box_css_click( self.driver, '#examination > div.col-lg-8.col-md-8.col-sm-12.col-xs-12.con-body-padding.' 'text-left > select.sel-text.stu-class', class_name)
def select_who_on_duty(self, who): Service.wait_until_element_is_visible( self.driver, By.CSS_SELECTOR, '#addDuty-table > tr > td:nth-child(1) > ' 'select') Service.box_css_click( self.driver, '#addDuty-table > tr > td:nth-child(1) > select', who)
def click_modify_btn(self): Service.wait_until_element_is_visible( self.driver, By.CSS_SELECTOR, "button[class='btn btn-primary btn-padding']" ":nth-child(1)") self.driver.find_element_by_css_selector( '#enterpriseTb > tbody > tr:nth-child(1) > ' 'td:nth-child(7) > button').click()
def click_add_enterprise_button(self): Service.wait_until_element_is_visible( self.driver, By.CSS_SELECTOR, "button[class='btn btn-primary btn-padding']" ":nth-child(1)") self.driver.find_element_by_css_selector( "button[class='btn btn-primary btn-padding']:nth-child(1)").click( )
def click_sigle_import_btn(self): Service.wait_until_element_is_visible( self.driver, By.CSS_SELECTOR, '#pe-result > tbody > tr:nth-child(1) >' ' td:nth-child(9) > button') self.driver.find_element_by_css_selector( '#pe-result > tbody > tr:nth-child(1) > td:nth-child(9) > button' ).click()
def input_end_time(self, e_time): ele = self.driver.find_element_by_name('e_att_time') js = 'document.querySelector("#morningexam > div.col-lg-8.col-md-8.col-sm-12.col-xs-12.con-body-padding.' \ 'text-left > input:nth-child(3)").value="";' ele.click() self.driver.execute_script(js) Service.send_input(ele, e_time) ele.send_keys(Keys.ENTER)
def input_query_name(self, name): Service.wait_until_element_is_visible( self.driver, By.CSS_SELECTOR, '#content > div.row.con-margin.con-body-header > div > ' 'input[type=text]') ele = self.driver.find_element_by_css_selector( '#content > div.row.con-margin.con-body-header > div > ' 'input[type=text]') Service.send_input(ele, name)
def click_phase_import_btn(self): Service.wait_until_element_is_visible( self.driver, By.CSS_SELECTOR, '#stagetest > div.col-lg-12.col-md-12.col-sm' '-12.col-xs-12.con-body-padding.text-left > ' 'div > button:nth-child(2)') self.driver.find_element_by_css_selector( '#stagetest > div.col-lg-12.col-md-12.col-sm-12.col-xs-12.con-body' '-padding.text-left > div > button:nth-child(2)').click()
def click_random_down_btn(self): Service.wait_until_element_is_visible(self.driver, By.CSS_SELECTOR, '#exam-table > tbody') find_tr = self.driver.find_element_by_css_selector( "#exam-table > tbody").find_elements_by_tag_name("tr") sum_tr = len(find_tr) import random ram_num = random.randint(1, sum_tr - 1) self.driver.find_element_by_css_selector( '#exam-table > tbody > tr:nth-child(%d) > td:nth-child(6) >' ' button:nth-child(2)' % ram_num).click()
def do_refer_to_duty(self, who, date): self.click_teaching_manage_link() self.click_teacher_duty_link() self.click_refer_to_duty() self.select_who_on_duty(who) self.input_duty_date(date) self.click_save_btn() Service.wait_until_element_is_visible( self.driver, By.CSS_SELECTOR, 'body > div.bootbox.modal.fade.mydialog.in > ' 'div > div > div.modal-body > div')
def random_locat_tr(self): Service.wait_until_element_is_visible(self.driver, By.CSS_SELECTOR, '#class-table > tbody') find_tr = self.driver.find_element_by_css_selector( "#class-table > tbody").find_elements_by_tag_name("tr") sum_tr = len(find_tr) import random ram_num = random.randint(1, sum_tr - 1) self.driver.find_element_by_xpath( '//*[@id="class-table"]/tbody/tr[%d]/td[1]/input' % ram_num).click()
def do_query_overtime_application(self, status, code, s_time, e_time): self.click_teaching_manage_link() self.click_overtime_appliaction_link() self.select_approval_status(status) self.input_code(code) self.input_s_time(s_time) self.input_e_time(e_time) self.click_query_btn() Service.wait_until_element_is_visible( self.driver, By.XPATH, '//*[@id="queryPara"]/div[2]/div[2]/div[4]/' 'div[1]/span[1]') ele_text = self.driver.find_element_by_xpath( '//*[@id="queryPara"]/div[2]/div[2]/div[4]/div[1]/span[1]').text return ele_text
def test_b_entry_sigle_exam(self, class_name, phase, week, score, expect): self.week_exam.do_entry_sigle_score(class_name, phase, week, score) if Service.is_element_present( self.driver, By.CSS_SELECTOR, 'body > div.bootbox.modal.fade.mydialog.in' ' > div > div'): actual = 'test entry sigle exam fail' self.driver.refresh() else: ele = self.driver.find_element_by_css_selector( '#pe-result > tbody > tr:nth-child(1) > ' 'td:nth-child(9) > button') attr = ele.get_attribute('onclick') print(attr) attr_dict = attr.split('(')[1].split(')')[0] import json dict_attr = json.loads(attr_dict, encoding='utf-8') student_id = dict_attr['student_id'] phase1_score = dict_attr['phase1'] sql1 = f"select AVG(score) from week_exam where week_exam_student_id='{student_id}' and phase='01'" db_result = Utility.query_one(user_info, sql1) print(db_result, phase1_score) if db_result[0] == int(phase1_score): actual = 'test entry sigle exam pass' else: actual = 'test entry sigle exam fail' self.assertEqual(expect, actual)
def get_record_text(self): if Service.wait_until_element_is_visible( self.driver, By.XPATH, '//*[@id="stuInfo"]/div[3]/div[2]/div[4]/div[1]/span[1]'): ele_text = self.driver.find_element_by_xpath( '//*[@id="stuInfo"]/div[3]/div[2]/div[4]/div[1]/span[1]').text return ele_text
def test_a_modify_login_passwd(self, old, new1, new2, expect): self.modify_passwd.do_modify_login_passwd(old, new1, new2) username = login_user_info['username'] sql = f'update system_user set pwd="B5B1C07C180FEFC77671906F382488F2" where name="{username}"' if '修改成功' in self.driver.find_element_by_css_selector( '#panel-password-success>div.modal-body.modal-warning>div>h4' ).text: actual = 'login: modify password pass' Utility.update_data(login_user_info, sql) self.driver.refresh() else: if Service.is_element_present( self.driver, By.CSS_SELECTOR, 'body>div.bootbox.modal.fade.mydialog.in' '>div>div>div.modal-body>div'): content = self.driver.find_element_by_css_selector( 'body>div.bootbox.modal.fade.mydialog.in' '>div>div>div.modal-body>div').text if '新密码和原密码一致' in content: actual = 'login:new vs old is same' elif '原密码错误' in content: actual = 'login:old password is wrong' elif '请输入原密码' in content: actual = 'login:old passeord is empty' elif '两次新密码输入不一致' in content: actual = 'login:new_1st vs new_2st is not equal' elif '新密码格式不正确' in content: actual = 'login:new password format is wrong' else: actual = 'login:unknow error' else: actual = 'alert not appear' self.driver.refresh() self.assertEqual(expect, actual)
def random_attendance_single(self, status): Service.wait_until_element_is_visible(self.driver, By.CSS_SELECTOR, '#attendance_table > tbody') find_tr = self.driver.find_element_by_css_selector( "#attendance_table > tbody").find_elements_by_tag_name("tr") sum_tr = len(find_tr) import random ram_num = random.randint(1, sum_tr - 1) Service.box_css_click( self.driver, '#attendance_table > tbody > tr:nth-child(%d) > td:nth-child(7) ' '> select' % (ram_num), status) css_ele = self.driver.find_element_by_css_selector( '#attendance_table > tbody > tr:nth-child(%d) > td:nth-child(7) ' '> button' % (ram_num)) css_ele.click() return css_ele.get_attribute('id')
def test_a_entry_sigle_phase_exam(self, class_name, score, phase, comment, expect): self.phase_exam.do_entry_sigle_phase_exam(class_name, score, phase, comment) if Service.is_element_present( self.driver, By.CSS_SELECTOR, 'body > div.bootbox.modal.fade.mydialog.in > ' 'div > div'): actual = 'test import sigle phase exam fail' self.driver.refresh() else: ele = self.driver.find_element_by_css_selector( '#pe-result > tbody > tr:nth-child(1) > ' 'td:nth-child(9) > button') attr = ele.get_attribute('onclick') print(attr) attr_dict = attr.split('(')[1].split(')')[0] import json dict_attr = json.loads(attr_dict, encoding='utf-8') student_id = dict_attr['student_id'] phase1_score = dict_attr['phase1'] phase2_score = dict_attr['phase2'] phase3_score = dict_attr['phase3'] phase4_score = dict_attr['phase4'] sql = f"select score from phase_exam where phase_exam_student_id ='{student_id}' and phase_exam_class_id = '4' order by phase asc" db_result = Utility.query_all(user_info, sql) print(db_result) num = len(db_result) print(num) print(float(db_result[0][0])) print(float(phase1_score)) if num == 1: if float(db_result[0][0]) == float(phase1_score): actual = 'test import sigle phase exam pass' else: actual = 'test import sigle phase exam fail' elif num == 2: if float(db_result[0][0]) == float(phase1_score) and float( db_result[1][0]) == float(phase2_score): actual = 'test import sigle phase exam pass' else: actual = 'test import sigle phase exam fail' elif num == 3: if float(db_result[0][0]) == float(phase1_score) and float(db_result[1][0]) == float(phase2_score) and \ float(db_result[2][0]) == float(phase3_score): actual = 'test import sigle phase exam pass' else: actual = 'test import sigle phase exam fail' elif num == 4: if float(db_result[0][0]) == float(phase1_score) and float(db_result[1][0]) == float(phase2_score) and float(db_result[2][0]) == float(phase3_score)\ and float(db_result[3][0]) == float(phase4_score): actual = 'test import sigle phase exam pass' else: actual = 'test import sigle phase exam fail' else: actual = 'test import sigle phase exam fail' self.assertEqual(expect, actual)
def test_decrypt(cls,second_pwd,expect): cls.decrypt.do_decrypt(second_pwd) if Service.is_element_present(cls.driver, By.CSS_SELECTOR, 'body > div.bootbox.modal.fade.mydialog.in > div > ' 'div > div.modal-body > div'): actual = 'test decrypt fail' cls.driver.refresh() else: actual = 'test decrypt pass' cls.assertEqual(expect,actual)
def em_submit(self): # 电脑回收 Service.click_id(self.driver, 'computer0') # 协议签署 Service.click_id(self.driver, 'protocol0') # 已入职 Service.click_id(self.driver, 'entry0') # 提交 Service.click_css( self.driver, '/html/body/div[7]/div[3]/div/div/div/div[2]/div[3]/div[2]/div[2]/' 'table/tbody/tr[1]/td[9]/button[2]') # 确认弹窗 Service.alert_windows(self.driver)
def test_em_student_id_query(cls, student_id_query, expect): try: EmploymentManagement(cls.driver).em_student_id_query(student_id_query) actual = Service.text_css(cls.driver,'/html/body/div[7]/div[3]/div/div/div/div[2]/div[3]/div[2]/div[2]/table/tbody/tr[1]/td[1]') cls.assertEqual(actual, expect) cls.driver.refresh() except Exception as e: actual = 'EM_failed' cls.driver.refresh() cls.assertEqual(actual, expect)
def test_em_interview_query(cls, technology, expect): try: EmploymentManagement(cls.driver).em_technology_query(technology) actual = Service.text_xpath(cls.driver,'/html/body/div[7]/div[3]/div/div/div/div[1]/div[2]/div[2]/div[2]/table/tbody/tr[1]/td[1]') cls.assertEqual(actual, expect) cls.driver.refresh() except Exception as e: actual = 'EM_failed' cls.driver.refresh() cls.assertEqual(actual, expect)
def do_add_overtime_application(self, s_time, e_time, way, hours, region, reason): self.click_teaching_manage_link() self.click_overtime_appliaction_link() self.click_add_btn() self.input_add_s_time(s_time) self.input_add_e_time(e_time) self.select_pay_way(way) self.select_add_hours(hours) self.select_add_region(region) self.input_add_reason(reason) self.click_add_commit_btn() Service.wait_until_element_is_visible( self.driver, By.CSS_SELECTOR, 'body > div.bootbox.modal.fade.mydialog.in >' ' div > div') ele_text = self.driver.find_element_by_css_selector( 'body > div.bootbox.modal.fade.mydialog.in > div > div >' ' div.modal-body > div').text return ele_text