def batch_add_workman(driver, file_path, remark): # 批量发起请假申请 """ :param driver: :param file_path: 附件路径 :param remark: 备注信息 :return: """ into_one_level(driver, '任务面板') sleep(1) into_one_level(driver, '发起申请') get_element(driver, ('xpath', "//div[contains(text(),'请假申请')]")).click() sleep(0.5) # 请假类型 element = "//select[@class='form-control input-sm']/option[%s]" % str( random.randint(1, 7)) get_element(driver, ('xpath', element)).click() get_element(driver, ('id', 'leaveAdd')).click() sleep(0.5) for i in range(0, 3): elements = "//tr[@data-index='%s']/td/input" % i get_element(driver, ('xpath', elements)).click() sleep(0.1) get_element(driver, ('xpath', "//a[contains(text(),'确定')]")).click() setting_input_time(driver) get_elements(driver, ('xpath', "//input[@placeholder='选择日期在合同范围内']"))[0].send_keys( get_now_dates()) get_elements(driver, ('xpath', "//input[@placeholder='选择日期在合同范围内']"))[1].send_keys( get_tomorrow_dates()) get_element( driver, ('xpath', "//textarea[@class='form-control']")).send_keys(remark) get_element( driver, ('xpath', "//div[@id='uploadFile']/input")).send_keys(file_path) get_element(driver, ('xpath', "//button[contains(text(),'提交申请')]")).click() get_element(driver, ('id', "success")).click() sleep(1.5) into_one_level(driver, '我的任务') get_element(driver, ('xpath', "//a[contains(text(),'我发起的')]")).click() try: get_element(driver, ('xpath', "//button[contains(text(),'请假工作流')]")).click() sleep(3) get_element( driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr[1]/td[8]/a")).click() assert_element = "//div[@class='tsk-inp col-xs-8' and contains(text(),'%s')]" % remark is_element_present(driver, ('xpath', assert_element)) except Exception as e: print(e) print('工人已经存在请假工作流,无法继续发起') bug_photo(driver) assert False
def logout(driver): driver.find_element_by_id("dropdownMenu-set").click() driver.find_element_by_xpath("//a[contains(text(),'注销')]").click() try: is_element_present(driver, ('xpath', "//button[contains(text(),'登录')]")) except Exception as e: print(e) print('注销失败') bug_photo(driver) return False
def add_team(driver, team_name): into_one_level(driver, '工程面板') sleep(1) into_two_level(driver, '组织构架') # 新增班组按钮 get_element(driver, ('xpath', "//button[@class='btn btn-primary btn-sm']")).click() sleep(1) get_elements(driver, ('xpath', "//input[@class='form-control input-sm']"))[2].clear() # 输入班组名称 get_elements(driver, ('xpath', "//input[@class='form-control input-sm']"))[2].send_keys(team_name) # 选择班组长 get_element(driver, ('xpath', "//*[@id='add-team']/form/div[3]/div/select/option[2]")).click() # 选择质量员 get_element(driver, ('xpath', "//*[@id='add-team']/form/div[4]/div/select/option[2]")).click() # 确定 get_element(driver, ('xpath', "//*[@id='add-team']/form/div[5]/div/button[1]")).click() sleep(1) team_name_element = "//div[contains(text(),'%s')]" % team_name if is_element_present(driver, ('xpath', team_name_element)): pass else: bug_photo(driver) print('新增班组失败') assert False # 修改班组 driver.find_element_by_xpath(team_name_element).click() get_element(driver, ('xpath', "//button[contains(text(),'修改班组')]")).click() new_team_name = getRandomName() sleep(1) get_elements(driver, ('xpath', "//input[@class='form-control input-sm']"))[2].clear() # 输入新的班组名称 get_elements(driver, ('xpath', "//input[@class='form-control input-sm']"))[2].send_keys(new_team_name) # 确定 get_element(driver, ('xpath', "//*[@id='add-team']/form/div[5]/div/button[1]")).click() sleep(1) new_team_name_element = "//div[contains(text(),'%s')]" % new_team_name if is_element_present(driver, ('xpath', new_team_name_element)): pass else: bug_photo(driver) print('新增班组失败') assert False get_element(driver, ('xpath', new_team_name_element)).click() get_element(driver, ('xpath', "//button[contains(text(),'删除班组')]")).click() get_element(driver, ('xpath', "//a[@class='layui-layer-btn0']")).click() sleep(1) if is_element_present(driver, ('xpath', team_name_element)): bug_photo(driver) print('新增班组失败') assert False else: pass
def project_delay(driver): try: into_one_level(driver, '工程面板') sleep(1) get_elements(driver, ('xpath', "//a[contains(text(),'设置')]"))[1].click() sleep(0.5) get_element(driver, ('xpath', "//button[contains(text(),'项目延期')]")).click() sleep(1) num = 300 setting_input_time(driver) get_element(driver, ('xpath', "//input[@placeholder='选择日期需大于原总包合同结束时间']")).send_keys(get_future_date(num)) get_element(driver, ('xpath', "//button[contains(text(),'提交申请')]")).click() sleep(0.5) get_element(driver, ('id', 'success')).click() while 1: if is_element_present(driver, ('xpath', "//div[contains(text(),'延期时间必须大于总包合同的竣工日期')]")): sleep(0.1) get_element(driver, ('xpath', "//span[@class='layui-layer-setwin']/a")).click() get_element(driver, ('xpath', "//input[@placeholder='选择日期需大于原总包合同结束时间']")).clear() num += 20 get_element(driver, ('xpath', "//input[@placeholder='选择日期需大于原总包合同结束时间']")).send_keys(get_future_date(num)) get_element(driver, ('xpath', "//button[contains(text(),'提交申请')]")).click() sleep(0.5) get_element(driver, ('id', 'success')).click() else: break except Exception as e: print(e) bug_photo(driver) assert False
def change_workman_contract_date(driver): try: now_date = get_future_date(90) into_one_level(driver, "任务面板") sleep(1) into_two_level(driver, "发起申请") get_element(driver, ('xpath', "//div[contains(text(),'用工合同期限修改')]")).click() get_elements( driver, ('xpath', "//input[@class='form-control input-sm']"))[0].click() get_element(driver, ('id', 'realname')).send_keys('曹永') get_element(driver, ('id', 'realsearch')).click() sleep(0.5) get_element( driver, ('xpath', "//*[@id='lay-user-f']/tbody/tr/td[1]/input")).click() get_element(driver, ('xpath', "//a[contains(text(),'确定')]")).click() sleep(0.5) setting_input_time(driver) get_element( driver, ('xpath', "//input[@placeholder='请选择日期']")).send_keys(now_date) get_element(driver, ('xpath', "//button[contains(text(),'提交申请')]")).click() get_element(driver, ('id', "success")).click() assert is_element_present(driver, ( 'xpath', "//div[contains(text(),'成功')]/i[@class='layui-layer-ico layui-layer-ico1' ]" )) except Exception as e: print(e) bug_photo(driver) assert False
def request_for_overtime(driver, remark, file_path): """ # 加班申请 :param driver: :param remark:备注信息 :param file_path: 附件路径 :return: """ into_one_level(driver, '任务面板') sleep(1) into_one_level(driver, '发起申请') get_element(driver, ('xpath', "//div[contains(text(),'加班申请')]")).click() get_element(driver, ('id', 'leaveAdd')).click() sleep(0.5) element = "//*[@id='lay-user-f']/tbody/tr" for i in range(0, len(get_elements(driver, ('xpath', element))), 2): elements = "//tr[@data-index='%s']/td/input" % i get_element(driver, ('xpath', elements)).click() sleep(0.1) get_element(driver, ('xpath', "//button[contains(text(),'添加至已选')]")).click() get_element(driver, ('xpath', "//a[contains(text(),'确定')]")).click() setting_input_time(driver) get_elements(driver, ('xpath', "//div[@class='col-sm-6']/input"))[0].send_keys( get_now_dates()) get_element( driver, ('xpath', "//input[@placeholder='选择时间需小于加班结束时间']")).send_keys('20:00') get_element( driver, ('xpath', "//input[@placeholder='选择时间需大于加班开始时间']")).send_keys('21:00') overtime_type = "//select[@class='form-control input-sm']/option[%s]" % str( random.randint(1, 2)) get_element(driver, ('xpath', overtime_type)).click() get_element( driver, ('xpath', "//textarea[@class='form-control']")).send_keys(remark) get_element( driver, ('xpath', "//div[@id='uploadFile']/input")).send_keys(file_path) get_element(driver, ('xpath', "//button[contains(text(),'提交申请')]")).click() get_element(driver, ('id', "success")).click() sleep(0.5) into_one_level(driver, '我的任务') get_element(driver, ('xpath', "//a[contains(text(),'我发起的')]")).click() try: get_element(driver, ('xpath', "//button[contains(text(),'加班工作流')]")).click() get_element( driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr[1]/td[8]/a")).click() assert_element = "//div[@class='tsk-inp col-xs-8' and contains(text(),'%s')]" % remark assert is_element_present(driver, ('xpath', assert_element)) except Exception as e: print(e) bug_photo(driver) assert False
def verify_real_name(driver, name, identity, path1, path2): """ :param driver: :param name: 姓名 :param identity: 身份证号 :param path1: 身份证正面路径 :param path2:身份证反面路径 :return: """ sleep(1) get_element(driver, ('id', 'dropdownMenu-set')).click() if is_element_present_3s(driver, ('xpath', "//a[contains(text(),'实名认证')]"), 2): sleep(1) get_element(driver, ('xpath', "//a[contains(text(),'实名认证')]")).click() else: pass if is_element_present( driver, ('xpath', "//button[@class='zdy-btn-blue reg-btn']")): sleep(4) get_element( driver, ('xpath', "//button[@class='zdy-btn-blue reg-btn']")).click() get_element(driver, ('xpath', "//input[@placeholder='真实姓名(必须填写)']")).clear() get_element( driver, ('xpath', "//input[@placeholder='真实姓名(必须填写)']")).send_keys(name) get_element(driver, ('xpath', "//input[@placeholder='身份证号(必须填写)']")).send_keys(identity) get_element(driver, ('id', "file1")).send_keys(path1) get_element(driver, ('id', "file2")).send_keys(path2) driver.find_element_by_xpath( "//button[contains(text(),'完成认证')]").click() sleep(5) if is_element_present(driver, ('xpath', "//a[contains(text(),'个人面板')]")): assert get_element(driver, ('id', 'dropdownMenu-set')).text == name, "认证失败" else: bug_photo(driver) assert False, "没跳转到实名认证后的页面" else: print("该用户已经实名认证")
def work_experience(driver): company_name = getCompanyName() project_name = company_name[2:-4] + '工程' start_date = get_pass_dates(random.randint(300, 400)) end_date = get_pass_dates(random.randint(100, 299)) information = "上士闻道勤而行之;中士闻道若存若亡;下士闻道大笑之,不笑不足以为道。执行是一日复一日的" try: if is_element_present(driver, ('xpath', "//i[@data-target='#mo-work-add']")): get_element(driver, ('xpath', "//i[@data-target='#mo-work-add']")).click() else: get_element(driver, ('xpath', "//div[@data-target='#mo-work']")).click() get_element(driver, ( 'xpath', "//div[@data-target='#mo-work-add' and contains(text(),'添加工作经验')]" )).click() get_elements( driver, ('xpath', "//div[@class='col-sm-6']/input[@placeholder='']" ))[1].send_keys(company_name) sleep(1) setting_input_time(driver) get_elements( driver, ('xpath', "//input[@data-max-time='']"))[2].send_keys(start_date) end_date_element = "//input[@data-min-time='%s']" % start_date get_element(driver, ('xpath', end_date_element)).send_keys(end_date) get_elements( driver, ('xpath', "//div[@class='col-sm-6']/input[@placeholder='']" ))[2].send_keys(project_name) get_element(driver, ('xpath', "//div[@class='col-sm-6']/textarea[@class='form-control']" )).send_keys(information) get_elements(driver, ('xpath', "//button[contains(text(),'完成')]"))[1].click() sleep(0.5) element = "//h4[contains(text(),'%s')]" % company_name assert is_element_present(driver, ('xpath', element)) except Exception as e: print(e) bug_photo(driver) assert False
def to_apply_for_leave(driver, file_path, remark): """ :param driver: :param file_path: 附件路径 :param remark: 备注 :return: """ into_one_level(driver, '任务面板') sleep(1) into_one_level(driver, '发起申请') get_element(driver, ('xpath', "//div[contains(text(),'请假申请')]")).click() sleep(0.5) element = "//select[@class='form-control input-sm']/option[%s]" % str( random.randint(1, 7)) get_element(driver, ('xpath', element)).click() get_element(driver, ('id', 'leaveAdd')).click() get_element(driver, ('id', 'realname')).send_keys('曹永') get_element(driver, ('id', 'realsearch')).click() sleep(0.5) get_element( driver, ('xpath', "//*[@id='lay-user-f']/tbody/tr/td[1]/input")).click() get_element(driver, ('xpath', "//button[contains(text(),'添加至已选')]")).click() get_element(driver, ('xpath', "//a[contains(text(),'确定')]")).click() setting_input_time(driver) get_elements(driver, ('xpath', "//input[@placeholder='选择日期在合同范围内']"))[0].send_keys( get_now_dates()) get_elements(driver, ('xpath', "//input[@placeholder='选择日期在合同范围内']"))[1].send_keys( get_tomorrow_dates()) get_element( driver, ('xpath', "//textarea[@class='form-control']")).send_keys(remark) get_element( driver, ('xpath', "//div[@id='uploadFile']/input")).send_keys(file_path) get_element(driver, ('xpath', "//button[contains(text(),'提交申请')]")).click() get_element(driver, ('id', "success")).click() sleep(2) into_one_level(driver, '我的任务') get_element(driver, ('xpath', "//a[contains(text(),'我发起的')]")).click() try: get_element(driver, ('xpath', "//button[contains(text(),'请假工作流')]")).click() get_element( driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr[1]/td[8]/a")).click() assert_element = "//div[@class='tsk-inp col-xs-8' and contains(text(),'%s')]" % remark assert is_element_present(driver, ('xpath', assert_element)) except Exception as e: print(e) bug_photo(driver) assert False
def camera_management(driver): into_two_level(driver, '设备管理') driver.find_element_by_xpath("//a[contains(text(),'摄像头')]").click() num = random_str(4) + str(random.randint(1000000, 9999999)) random_ip = "rtsp://" + "192.168.1.%d" % random.randint(1, 255) # 增加摄像头 driver.find_elements_by_xpath("//button[contains(text(),'新增')]")[3].click() get_element(driver, ('xpath', "//input[@placeholder='请输入摄像头设备号']")).send_keys(num) get_element(driver, ('xpath', "//option[contains(text(),'253112612')]")).click() camera_element = "//*[@id='sxt']/form/div[4]/select/option[%d]" % random.randint( 1, 2) get_element(driver, ('xpath', camera_element)).click() get_element( driver, ('xpath', "//input[@placeholder='请输入rtsp地址']")).send_keys(random_ip) driver.find_element_by_xpath("//button[contains(text(),'确认')]").click() get_elements( driver, ('xpath', "//input[@placeholder='请输入设备号筛选']"))[1].send_keys(num) get_elements(driver, ('xpath', "//button[contains(text(),'筛选')]"))[3].click() assert str(num) == get_element( driver, ('xpath', "//*[@id='sxt-table']/tbody/tr[1]/td[2]")).text, "不在location中,新增失败" # 更新摄像头 get_element(driver, ('xpath', "//*[@id='sxt-table']/tbody/tr/td[6]/a")).click() num1 = random_str(4) + str(random.randint(1000000, 9999999)) get_element(driver, ('xpath', "//input[@placeholder='请输入摄像头设备号']")).clear() get_element(driver, ('xpath', "//input[@placeholder='请输入摄像头设备号']")).send_keys(num1) driver.find_elements_by_xpath("//button[contains(text(),'确认')]")[1].click() get_elements(driver, ('xpath', "//input[@placeholder='请输入设备号筛选']"))[1].clear() get_elements( driver, ('xpath', "//input[@placeholder='请输入设备号筛选']"))[1].send_keys(num1) get_elements(driver, ('xpath', "//button[contains(text(),'筛选')]"))[3].click() assert str(num1) == get_element( driver, ('xpath', "//*[@id='sxt-table']/tbody/tr[1]/td[2]")).text, "不在location中,新增失败" # 删除闸机 get_element(driver, ('xpath', "//*[@id='sxt-table']/tbody/tr/td[1]")).click() get_elements(driver, ('xpath', "//button[contains(text(),'删除')]"))[3].click() get_elements(driver, ('xpath', "//button[contains(text(),'确认')]"))[2].click() get_element(driver, ('id', "success")).click() assert is_element_present(driver, ('xpath', "//td[@colspan='6']")), "删除闸机失败"
def add_education_experience(driver): sleep(3) try: if is_element_present(driver, ('xpath', "//i[@data-target='#mo-edu-add']")): get_element(driver, ('xpath', "//i[@data-target='#mo-edu-add']")).click() else: get_element(driver, ('xpath', "//div[@data-target='#mo-edu']")).click() get_element(driver, ( 'xpath', "//div[@data-target='#mo-edu-add' and contains(text(),'添加教育经历')]" )).click() work_type = "//div[1]/div[1]/select[@class='form-control']/option[%s]" % str( random.randint(1, 10)) get_elements(driver, ('xpath', work_type))[1].click() get_element(driver, ('xpath', "//input[@placeholder='专业']")).send_keys('建筑') start_dates = get_pass_dates(random.randint(200, 300)) end_dates = get_pass_dates(random.randint(50, 199)) setting_input_time(driver) get_element(driver, ( 'xpath', "//input[@placeholder='' and @class='form-control input-sm form-date val-start-date']" )).send_keys(start_dates) get_elements(driver, ( 'xpath', "//input[@placeholder='' and @class='form-control input-sm form-date']" ))[-1].send_keys(end_dates) school_name = getCompanyName()[2:-4] + '学校' get_element( driver, ('xpath', "//input[@placeholder='学校名称']")).send_keys(school_name) get_elements(driver, ('xpath', "//button[contains(text(),'完成')]"))[2].click() title = school_name + '(' + start_dates + '——' + end_dates + ')' element = "//h4[contains(text(),'%s')]" % title assert is_element_present(driver, ('xpath', element)) except Exception as e: print(e) bug_photo(driver) assert False
def change_time_of_attendance(driver, remark, file_path): try: into_one_level(driver, '任务面板') sleep(1) into_one_level(driver, '发起申请') get_element(driver, ('xpath', "//div[contains(text(),'修改出勤时间')]")).click() get_element(driver, ('id', 'leaveAdd')).click() sleep(0.5) element = "//*[@id='lay-user-f']/tbody/tr" for i in range(0, len(get_elements(driver, ('xpath', element))), 2): elements = "//tr[@data-index='%s']/td/input" % i get_element(driver, ('xpath', elements)).click() sleep(0.1) get_element(driver, ('xpath', "//button[contains(text(),'添加至已选')]")).click() get_element(driver, ('xpath', "//a[contains(text(),'确定')]")).click() setting_input_time(driver) get_element( driver, ('xpath', "//input[@placeholder='选择日期不得小于当前日期']")).send_keys( get_now_dates()) get_elements( driver, ('xpath', "//input[@placeholder='']"))[0].send_keys('08:00') get_elements( driver, ('xpath', "//input[@placeholder='']"))[1].send_keys('17:00') get_element( driver, ('xpath', "//textarea[@class='form-control']")).send_keys(remark) get_element( driver, ('xpath', "//div[@id='uploadFile']/input")).send_keys(file_path) get_element(driver, ('xpath', "//button[contains(text(),'提交申请')]")).click() get_element(driver, ('id', "success")).click() sleep(0.5) into_one_level(driver, '我的任务') get_element(driver, ('xpath', "//a[contains(text(),'我发起的')]")).click() get_element( driver, ('xpath', "//button[contains(text(),'修改出勤时间工作流')]")).click() get_element( driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr[1]/td[8]/a")).click() assert_element = "//div[@class='tsk-inp col-xs-8' and contains(text(),'%s')]" % remark assert is_element_present(driver, ('xpath', assert_element)) except Exception as e: print(e) bug_photo(driver) assert False
def set_role(driver, num): # 跳转到最后一页 if is_element_present(driver, ('xpath', "//a[contains(text(),'‹')]")): driver.find_element_by_xpath("//a[contains(text(),'‹')]").click() # 选择最后一个人 driver.find_elements_by_xpath("//input[@name='btSelectItem']")[-1].click() # 点击角色设置 driver.find_element_by_xpath("//button[contains(text(),'角色设置')]").click() # 选择需要设置的角色 # num 1 代表管理层;2 企业运维;3 项目经理;4 劳务经理;5 班组长;6 质量员 role_element = ".//*[@id='lay-role-set']/div[2]/div[2]/select/option[%d]" % num driver.find_element_by_xpath(role_element).click() driver.find_element_by_xpath("//a[contains(text(),'确定')]").click()
def brake_machine(driver): into_two_level(driver, '设备管理') driver.find_element_by_xpath("//a[contains(text(),'闸机')]").click() num = random_str(4) + str(random.randint(1000000, 9999999)) random_ip = "192.168.1.%d" % random.randint(1, 255) # 增加闸机 driver.find_elements_by_xpath("//button[contains(text(),'新增')]")[2].click() get_element(driver, ('xpath', "//input[@placeholder='请输入闸机设备号']")).send_keys(num) get_element(driver, ('xpath', "//option[contains(text(),'hpface联调闸机')]")).click() get_element( driver, ('xpath', "//input[@placeholder='请输入闸机IP']")).send_keys(random_ip) driver.find_element_by_xpath("//button[contains(text(),'确认')]").click() get_element(driver, ('xpath', "//input[@placeholder='请输入设备号筛选']")).send_keys(num) get_elements(driver, ('xpath', "//button[contains(text(),'筛选')]"))[2].click() assert str(num) == get_element( driver, ('xpath', "//*[@id='zj-table']/tbody/tr[1]/td[2]")).text, "不在location中,新增失败" # 更新闸机 get_element(driver, ('xpath', "//*[@id='zj-table']/tbody/tr/td[5]/a")).click() num1 = random_str(4) + str(random.randint(1000000, 9999999)) get_element(driver, ('xpath', "//input[@placeholder='请输入闸机号码']")).clear() get_element(driver, ('xpath', "//input[@placeholder='请输入闸机号码']")).send_keys(num1) driver.find_elements_by_xpath("//button[contains(text(),'确认')]")[1].click() get_element(driver, ('xpath', "//input[@placeholder='请输入设备号筛选']")).clear() get_element(driver, ('xpath', "//input[@placeholder='请输入设备号筛选']")).send_keys(num1) get_elements(driver, ('xpath', "//button[contains(text(),'筛选')]"))[2].click() assert str(num1) == get_element( driver, ('xpath', "//*[@id='zj-table']/tbody/tr[1]/td[2]")).text, "不在location中,新增失败" # 删除闸机 get_element(driver, ('xpath', "//*[@id='zj-table']/tbody/tr/td[1]")).click() get_elements(driver, ('xpath', "//button[contains(text(),'删除')]"))[2].click() get_elements(driver, ('xpath', "//button[contains(text(),'确认')]"))[2].click() get_element(driver, ('id', "success")).click() assert is_element_present(driver, ('xpath', "//td[@colspan='5']")), "删除闸机失败"
def personal_certificate(driver, file_path): sleep(3) try: if is_element_present(driver, ('xpath', "//i[@data-target='#mo-book-add']")): get_element(driver, ('xpath', "//i[@data-target='#mo-book-add']")).click() else: get_element(driver, ('xpath', "//div[@data-target='#mo-book']")).click() get_element(driver, ( 'xpath', "//div[@data-target='#mo-book-add' and contains(text(),'添加证书')]" )).click() work_type = "//div[1]/div[1]/select[@class='form-control']/option[%s]" % str( random.randint(2, 39)) get_elements(driver, ('xpath', work_type))[0].click() certificate_number = random_str() + get_org_no()[:-3] get_element( driver, ('xpath', "//input[@placeholder='请输入工种证书号']")).send_keys(certificate_number) level_education = "//div[3]/div[1]/select[@class='form-control']/option[%s]" % str( random.randint(2, 11)) get_elements(driver, ('xpath', level_education))[0].click() setting_input_time(driver) get_element( driver, ('xpath', "//input[@placeholder='选择日期不得晚于当前日期']")).send_keys( get_pass_dates(random.randint(200, 400))) get_element( driver, ('xpath', "//input[@placeholder='选择日期大于等于领证日期']")).send_keys( get_pass_dates(random.randint(50, 199))) get_element( driver, ('xpath', "//input[@placeholder='选择日期大于使用开始日期']")).send_keys( get_tomorrow_dates()) get_element( driver, ('xpath', "//div[7]/div[1][@class='col-sm-6']/input")).send_keys('政府') if len(get_elements(driver, ('xpath', "//input[@name='file']"))) == 2: get_elements( driver, ('xpath', "//input[@name='file']"))[0].send_keys(file_path) get_elements( driver, ('xpath', "//input[@name='file']"))[1].send_keys(file_path) else: get_elements( driver, ('xpath', "//input[@name='file']"))[-2].send_keys(file_path) get_elements( driver, ('xpath', "//input[@name='file']"))[-1].send_keys(file_path) # 利用js 获取当前元素位置 driver.execute_script( "arguments[0].scrollIntoView();", get_element(driver, ('xpath', "//button[contains(text(),'提交')]"))) sleep(0.5) get_element(driver, ('xpath', "//button[contains(text(),'提交')]")).click() element = "//h4[contains(text(),'%s')]" % certificate_number assert is_element_present(driver, ('xpath', element)), "添加证书失败" except Exception as e: print(e) bug_photo(driver) assert False
def workman_contract_piece(driver, artifact_name, people): try: into_one_level(driver, "任务面板") sleep(1) into_two_level(driver, "发起申请") get_element(driver, ('xpath', "//div[contains(text(),'新建用工合同')]")).click() get_element(driver, ('xpath', "//span[contains(text(),'计件工人用工合同')]")).click() project_element = "//select[@id='reproject-name']/option[2]" get_element(driver, ('xpath', project_element)).click() get_element(driver, ('xpath', "//*[@id='reproject-team']/option[2]")).click() get_elements( driver, ('xpath', "//input[@placeholder='必填']"))[0].send_keys(artifact_name) address = ['上海', '北京', '广州', '杭州', '无锡', '苏州', '徐州'] get_elements(driver, ('xpath', "//input[@placeholder='必填']"))[1].send_keys( address[random.randint(0, len(address))]) get_elements(driver, ('xpath', "//input[@placeholder='必填']"))[2].send_keys( random.randint(88, 188)) get_elements(driver, ('xpath', "//input[@placeholder='必填']"))[3].send_keys( random.randint(199, 399)) get_element( driver, ('xpath', "//textarea[@placeholder='选填']")).send_keys('优秀的完成') # 选择工种 work_type = "//*[@id='work-type']/option" work_type_element = "//*[@id='work-type']/option[%d]" % random.randint( 2, len(work_type)) get_element(driver, ('xpath', work_type_element)).click() setting_input_time(driver) get_element(driver, ('id', 'select2-piece-worker-Name-container')).click() get_element( driver, ('xpath', "//input[@class='select2-search__field']")).send_keys(people) sleep(0.5) get_element( driver, ('xpath', "//input[@class='select2-search__field']")).send_keys( Keys.ENTER) get_elements( driver, ('xpath', "//input[@placeholder='必填']"))[4].send_keys('08:30') get_elements( driver, ('xpath', "//input[@placeholder='必填']"))[5].send_keys('17:30') get_element( driver, ('xpath', "//input[@placeholder='小于用工合同结束日期' ]")).send_keys( get_pass_dates(2)) get_element( driver, ('xpath', "//input[@placeholder='选择日期不得大于分包合同结束日期']")).send_keys( get_future_date(180)) get_elements(driver, ('xpath', "//input[@placeholder='必填']"))[6].send_keys( random.randint(1, 30)) get_element(driver, ('xpath', "//button[contains(text(),'完成')]")).click() assert is_element_present(driver, ( 'xpath', "//div[contains(text(),'成功')]/i[@class='layui-layer-ico layui-layer-ico1' ]" )) except Exception as e: print(e) bug_photo(driver) assert False
def workman_contract(driver, people): try: into_one_level(driver, "任务面板") sleep(1) into_two_level(driver, "发起申请") get_element(driver, ('xpath', "//div[contains(text(),'新建用工合同')]")).click() get_element(driver, ('xpath', "//span[contains(text(),'计时工人用工合同')]")).click() project_element = "//select[@id='reproject-name']/option[2]" get_element(driver, ('xpath', project_element)).click() get_element(driver, ('xpath', "//*[@id='reproject-team']/option[2]")).click() get_element(driver, ('xpath', "//input[@placeholder='请输入正常出勤单价']")).send_keys( random.randint(10, 99)) get_element(driver, ('xpath', "//input[@placeholder='请输入加班单价']")).send_keys( random.randint(10, 99)) # 选择工种 work_type = "//*[@id='work-type']/option" work_type_element = "//*[@id='work-type']/option[%d]" % random.randint( 2, len(work_type)) get_element(driver, ('xpath', work_type_element)).click() get_element( driver, ('xpath', "//input[@placeholder='请输入姓名查询']")).send_keys(people) sleep(0.5) workman_element = "//span[contains(text(),'%s')]" % people get_element(driver, ('xpath', "//input[@placeholder='请输入姓名查询']")).send_keys( Keys.ENTER) sleep(1) get_elements(driver, ('xpath', workman_element))[0].click() information = "按工作时间长短付给你工资的工作。" get_element( driver, ('xpath', "//textarea[@placeholder='选填']")).send_keys(information) setting_input_time(driver) get_elements( driver, ('xpath', "//input[@placeholder='必填']"))[0].send_keys('08:00') get_elements( driver, ('xpath', "//input[@placeholder='必填']"))[1].send_keys('18:00') get_element(driver, ('xpath', "//input[@placeholder='小于用工合同结束日期']")).send_keys( get_pass_dates(2)) get_element( driver, ('xpath', "//input[@placeholder='选择日期不得大于分包合同结束日期']")).send_keys( get_future_date(180)) get_elements( driver, ('xpath', "//input[@placeholder='必填']"))[2].send_keys('10') get_element(driver, ('xpath', "//button[contains(text(),'完成')]")).click() assert is_element_present(driver, ( 'xpath', "//div[contains(text(),'成功')]/i[@class='layui-layer-ico layui-layer-ico1' ]" )) except Exception as e: print(e) bug_photo(driver) assert False
def edit_workers_contract(driver, workers_name, photo_path): try: into_one_level(driver, '工程面板') sleep(0.5) into_two_level(driver, '工人管理') # 查询工人姓名 get_element( driver, ('xpath', "//div[@id='table-toolbar']/input")).send_keys(workers_name) # 搜索 get_element(driver, ('xpath', "//div[@id='table-toolbar']/button")).click() get_element(driver, ( 'xpath', "//a[contains(text(),'合同详情') and @class='table-a-link']")).click() sleep(0.5) get_element(driver, ('xpath', "//button[contains(text(),'内容编辑')]")).click() if is_element_present_3s( driver, ('xpath', "//input[@placeholder='请输入正常出勤单价']"), 3): pass else: driver.refresh() if is_element_present( driver, ('xpath', "//button[contains(text(),'内容编辑')]")): sleep(1) get_element( driver, ('xpath', "//button[contains(text(),'内容编辑')]")).click() else: pass sleep(0.5) get_element(driver, ('xpath', "//input[@placeholder='请输入正常出勤单价']")).clear() sleep(0.5) new_unit_price = random.randint(1, 200) get_element( driver, ('xpath', "//input[@placeholder='请输入正常出勤单价']")).send_keys(new_unit_price) sleep(0.1) new_overtime_work = random.randint(1, 200) get_element(driver, ('xpath', "//input[@placeholder='请输入加班单价']")).clear() sleep(1) get_element( driver, ('xpath', "//input[@placeholder='请输入加班单价']")).send_keys(new_overtime_work) get_element(driver, ('xpath', "//textarea[@placeholder='选填']")).clear() assert_information = '验证数据' get_element( driver, ('xpath', "//textarea[@placeholder='选填']")).send_keys(assert_information) setting_input_time(driver) get_element( driver, ('xpath', "//input[@placeholder='选择日期不得大于分包合同结束日期']")).clear() get_element( driver, ('xpath', "//input[@placeholder='选择日期不得大于分包合同结束日期']")).send_keys( get_future_date(150)) get_element( driver, ('xpath', "//div[@id='uploadFile2']/input[1]")).send_keys(photo_path) sleep(3) get_element(driver, ('xpath', "//button[contains(text(),'完成')]")).click() assert is_element_present(driver, ('id', 'LAY_demo2')) sleep(7) until_price = "//span[contains(text(),'单价:%s元/小时')]" % new_unit_price print(until_price) assert is_element_present(driver, ('xpath', until_price)), "工人单价未更新" over_time = "//span[contains(text(),'加班工资:%s元/小时')]" % new_overtime_work assert is_element_present(driver, ('xpath', over_time)), "加班工资未更新" workers_information = "//span[contains(text(),'内容:%s')]" % assert_information assert is_element_present(driver, ('xpath', workers_information)), "工作内容未更新" workers_contract_time = "//div[@id='laborContract']/p[contains(text(),'1.用工日期从%s进场始至%s日止')]" % ( str(get_pass_dates(2)), str(get_future_date(150))) assert is_element_present( driver, ('xpath', workers_contract_time)), "工人合同时间未更新" except Exception as e: print(e) bug_photo(driver) assert False
def request_for_overtime(driver, remark, file_path): """ # 加班申请 :param driver: :param remark:备注信息 :param file_path: 附件路径 :return: """ into_one_level(driver, '任务面板') sleep(1) into_one_level(driver, '发起申请') get_element(driver, ('xpath', "//div[contains(text(),'加班申请')]")).click() get_element(driver, ('id', 'leaveAdd')).click() sleep(0.5) element = "//*[@id='lay-user-f']/tbody/tr" for i in range(0, len(get_elements(driver, ('xpath', element))), 2): elements = "//tr[@data-index='%s']/td/input" % i get_element(driver, ('xpath', elements)).click() sleep(0.1) get_element(driver, ('xpath', "//a[contains(text(),'确定')]")).click() setting_input_time(driver) get_elements(driver, ('xpath', "//div[@class='col-sm-6']/input"))[0].send_keys( get_now_dates()) get_element( driver, ('xpath', "//input[@placeholder='选择时间需小于加班结束时间']")).send_keys('20:00') get_element( driver, ('xpath', "//input[@placeholder='选择时间需大于加班开始时间']")).send_keys('21:00') get_element( driver, ('xpath', "//input[@placeholder='请输入加班费, 单位:元/小时']")).send_keys( random.randint(20, 50)) get_element( driver, ('xpath', "//textarea[@class='form-control']")).send_keys(remark) get_element( driver, ('xpath', "//div[@id='uploadFile']/input")).send_keys(file_path) get_element(driver, ('xpath', "//button[contains(text(),'提交申请')]")).click() get_element(driver, ('id', "success")).click() sleep(0.5) i = 1 while 1: if is_element_present_3s(driver, ('xpath', "//div[contains(text(),'创建失败')]")): sleep(1) get_element(driver, ( 'xpath', "//a[@class='layui-layer-ico layui-layer-close layui-layer-close1']" )).click() sleep(0.2) get_elements( driver, ('xpath', "//div[@class='col-sm-6']/input"))[0].clear() get_elements( driver, ('xpath', "//div[@class='col-sm-6']/input"))[0].send_keys( get_pass_dates(i)) i += 1 get_element( driver, ('xpath', "//button[contains(text(),'提交申请')]")).click() get_element(driver, ('id', "success")).click() sleep(0.5) if is_element_present_3s(driver, ('id', "LAY_demo2")): break else: break into_one_level(driver, '我的任务') get_element(driver, ('xpath', "//a[contains(text(),'我发起的')]")).click() try: sleep(0.5) get_element(driver, ('xpath', "//button[contains(text(),'加班工作流')]")).click() get_element( driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr[1]/td[8]/a")).click() assert_element = "//div[@class='tsk-inp col-xs-8' and contains(text(),'%s')]" % remark assert is_element_present(driver, ('xpath', assert_element)) except Exception as e: print(e) bug_photo(driver) assert False
def attendance_machine(driver, people): global name1_text into_two_level(driver, '设备管理') driver.find_element_by_xpath("//a[contains(text(),'考勤卡')]").click() name_text = [] num = random.randint(100000, 999999) driver.find_element_by_xpath("//button[contains(text(),'新增')]").click() get_element( driver, ('xpath', "//input[@placeholder='请输入4-10位考勤卡号']")).send_keys(num) get_element( driver, ('xpath', "//span[@class='select2-selection__placeholder']")).click() get_element( driver, ('xpath', "//input[@class='select2-search__field']")).send_keys(people) sleep(0.5) get_element( driver, ('xpath', "//input[@class='select2-search__field']")).send_keys( Keys.ENTER) driver.find_element_by_xpath("//button[contains(text(),'确定')]").click() if is_element_present(driver, ('xpath', "//div[contains(text(),'该用户已绑定考勤卡')]")): # 解绑考勤卡 sleep(7) get_element(driver, ('xpath', "//input[@placeholder='请输入考勤卡号或姓名筛选']")).send_keys(people) get_elements(driver, ('xpath', "//button[contains(text(),'筛选')]"))[0].click() for i in range( len( get_elements(driver, ('xpath', "//*[@id='kqk-table']/tbody/tr"))), 0, -1): unbind_element = "//*[@id='kqk-table']/tbody/tr[%d]/td[4]/a" % i get_element(driver, ('xpath', unbind_element)).click() get_element( driver, ('xpath', "//*[@id='k']/form/div[4]/button[3]")).click() assert is_element_present( driver, ('xpath', "//i[@class='layui-layer-ico layui-layer-ico1']")), "解绑考勤卡失败" sleep(0.5) # 输入空格 查看全部 get_element(driver, ('xpath', "//input[@placeholder='请输入考勤卡号或姓名筛选']")).clear() get_element( driver, ('xpath', "//input[@placeholder='请输入考勤卡号或姓名筛选']")).send_keys(' ') sleep(0.5) get_elements(driver, ('xpath', "//button[contains(text(),'筛选')]"))[0].click() driver.find_element_by_xpath("//button[contains(text(),'新增')]").click() get_element( driver, ('xpath', "//input[@placeholder='请输入4-10位考勤卡号']")).send_keys(num) get_element( driver, ('xpath', "//span[@class='select2-selection__placeholder']")).click() get_element( driver, ('xpath', "//input[@class='select2-search__field']")).send_keys(people) sleep(0.5) get_element( driver, ('xpath', "//input[@class='select2-search__field']")).send_keys( Keys.ENTER) driver.find_element_by_xpath("//button[contains(text(),'确定')]").click() if is_element_present( driver, ('xpath', "html/body/div[1]/div[1]/div/div[2]/div[2]/div/div[1]/div[2]/div[2]/div[2]/div[4]/div[2]/ul/li[1]/a" )): get_element(driver, ( 'xpath', "html/body/div[1]/div[1]/div/div[2]/div[2]/div/div[1]/div[2]/div[2]/div[2]/div[4]/div[2]/ul/li[1]/a" )).click() sleep(0.5) element_len = get_elements(driver, ('xpath', "//*[@id='kqk-table']/tbody/tr")) for i in range(1, len(element_len) + 1): element = "//*[@id='kqk-table']/tbody/tr[%d]/td[2]" % i name_text.insert(i, get_element(driver, ('xpath', element)).text) assert str(num) in name_text, "考勤卡添加失败1" else: element_len_now = get_elements( driver, ('xpath', "//*[@id='kqk-table']/tbody/tr")) for i in range(1, len(element_len_now)): element = "//*[@id='kqk-table']/tbody/tr[%d]/td[2]" % i name_text.insert(i, get_element(driver, ('xpath', element)).text) assert str(num) in name_text, "考勤卡添加失败2" name1_text = [] for h in range( 1, len( get_elements(driver, ('xpath', "//*[@id='kqk-table']/tbody/tr"))) + 1): element = "//*[@id='kqk-table']/tbody/tr[%d]/td[3]" % h if get_element(driver, ('xpath', element)).text != '-': name1_text.insert(h, get_element(driver, ('xpath', element)).text) if is_element_present( driver, ('xpath', "html/body/div[1]/div[1]/div/div[2]/div[2]/div/div[1]/div[2]/div[2]/div[2]/div[4]/div[2]/ul/li[4]/a" )): get_element(driver, ( 'xpath', "html/body/div[1]/div[1]/div/div[2]/div[2]/div/div[1]/div[2]/div[2]/div[2]/div[4]/div[2]/ul/li[4]/a" )).click() sleep(0.5) sleep(1) get_element(driver, ('xpath', "//input[@placeholder='请输入考勤卡号或姓名筛选']")).send_keys( str(name1_text[0])) get_elements(driver, ('xpath', "//button[contains(text(),'筛选')]"))[0].click() assert name1_text[0] == get_element( driver, ('xpath', "//*[@id='kqk-table']/tbody/tr/td[3]")).text, "考勤卡筛选成功,or 筛选失败" # 解绑考勤卡 get_element(driver, ('xpath', "//input[@placeholder='请输入考勤卡号或姓名筛选']")).clear() get_element( driver, ('xpath', "//input[@placeholder='请输入考勤卡号或姓名筛选']")).send_keys(num) get_elements(driver, ('xpath', "//button[contains(text(),'筛选')]"))[0].click() get_element( driver, ('xpath', "//*[@id='kqk-table']/tbody/tr/td[1]/input")).click() sleep(0.5) driver.find_elements_by_xpath("//button[contains(text(),'删除')]")[0].click() get_elements(driver, ('xpath', "//button[contains(text(),'确定')]"))[3].click() get_element(driver, ('id', 'success')).click() if is_element_present( driver, ('xpath', "//div[contains(text(),'考勤卡不存在或无法删除已经绑定用户的考勤卡,请重新选择用户,或者先解绑')]")): sleep(7) try: # get_element(driver, ('xpath', "//button[contains(text(),'取消')]")).click() get_element( driver, ('xpath', "//*[@id='kqk-table']/tbody/tr/td[4]/a")).click() get_element( driver, ('xpath', "//*[@id='k']/form/div[4]/button[3]")).click() get_element(driver, ('xpath', "//*[@id='kqk-table']/tbody/tr/td[1]/input")).click() get_elements( driver, ('xpath', "//button[contains(text(),'删除')]"))[0].click() get_elements( driver, ('xpath', "//button[contains(text(),'确定')]"))[3].click() get_element(driver, ('id', 'success')).click() except Exception as e: bug_photo(driver) print(e) assert is_element_present(driver, ('id', "LAY_demo2")), "删除考勤卡失败"
def location_card(driver, people): into_two_level(driver, '设备管理') driver.find_element_by_xpath("//a[contains(text(),'定位卡')]").click() num = random.randint(1000000, 9999999) # 增加定位卡 driver.find_elements_by_xpath("//button[contains(text(),'新增')]")[1].click() get_element( driver, ('xpath', "//input[@placeholder='请输入6-10定位卡卡号']")).send_keys(num) sleep(0.1) driver.find_element_by_xpath("//button[contains(text(),'确认')]").click() get_element( driver, ('xpath', "//input[@placeholder='请输入定位卡号或姓名筛选']")).send_keys(num) get_elements(driver, ('xpath', "//button[contains(text(),'筛选')]"))[1].click() assert str(num) == get_element( driver, ('xpath', "//*[@id='dwk-table']/tbody/tr/td[2]")).text, "不在location中,新增失败" # 增加并且绑定人 num1 = random.randint(1000000, 9999999) driver.find_elements_by_xpath("//button[contains(text(),'新增')]")[1].click() get_element(driver, ('xpath', "//input[@placeholder='请输入6-10定位卡卡号']")).clear() get_element( driver, ('xpath', "//input[@placeholder='请输入6-10定位卡卡号']")).send_keys(num1) get_element( driver, ('xpath', "//span[@class='select2-selection__placeholder']")).click() get_element( driver, ('xpath', "//input[@class='select2-search__field']")).send_keys(people) sleep(0.5) get_element( driver, ('xpath', "//input[@class='select2-search__field']")).send_keys( Keys.ENTER) sleep(0.1) driver.find_element_by_xpath("//button[contains(text(),'确认')]").click() if is_element_present(driver, ('xpath', "//div[contains(text(),'该用户已绑定定位卡')]")): # 解绑定位卡 sleep(6) get_element(driver, ('xpath', "//input[@placeholder='请输入定位卡号或姓名筛选']")).clear() get_element(driver, ('xpath', "//input[@placeholder='请输入定位卡号或姓名筛选']")).send_keys(people) get_elements(driver, ('xpath', "//button[contains(text(),'筛选')]"))[1].click() sleep(1) for i in range( len( get_elements(driver, ('xpath', "//*[@id='dwk-table']/tbody/tr"))), 0, -1): unbind_element = "//*[@id='dwk-table']/tbody/tr[%d]/td[10]/a" % i get_element(driver, ('xpath', unbind_element)).click() sleep(0.1) get_element( driver, ('xpath', "//*[@id='dwk']/form/div[4]/button[3]")).click() assert is_element_present( driver, ('xpath', "//i[@class='layui-layer-ico layui-layer-ico1']")), "解绑考勤卡失败" sleep(0.5) # 输入空格 查看全部 get_element(driver, ('xpath', "//input[@placeholder='请输入定位卡号或姓名筛选']")).clear() get_element( driver, ('xpath', "//input[@placeholder='请输入定位卡号或姓名筛选']")).send_keys(' ') sleep(0.5) get_elements(driver, ('xpath', "//button[contains(text(),'筛选')]"))[1].click() driver.find_elements_by_xpath( "//button[contains(text(),'新增')]")[1].click() sleep(0.5) get_element( driver, ('xpath', "//input[@placeholder='请输入6-10定位卡卡号']")).send_keys(num1) get_element( driver, ('xpath', "//span[@class='select2-selection__placeholder']")).click() get_element( driver, ('xpath', "//input[@class='select2-search__field']")).send_keys(people) sleep(0.5) get_element( driver, ('xpath', "//input[@class='select2-search__field']")).send_keys( Keys.ENTER) driver.find_element_by_xpath("//button[contains(text(),'确认')]").click() get_element(driver, ('xpath', "//input[@placeholder='请输入定位卡号或姓名筛选']")).clear() get_element( driver, ('xpath', "//input[@placeholder='请输入定位卡号或姓名筛选']")).send_keys(num1) get_elements(driver, ('xpath', "//button[contains(text(),'筛选')]"))[1].click() sleep(1) assert people == get_element( driver, ('xpath', "//*[@id='dwk-table']/tbody/tr/td[3]")).text, "定位卡绑定人失败" for i in range( len( get_elements(driver, ('xpath', "//*[@id='dwk-table']/tbody/tr"))), 0, -1): location_element = "//*[@id='dwk-table']/tbody/tr[%d]/td[1]/input" % i get_element(driver, ('xpath', location_element)).click() driver.find_elements_by_xpath( "//button[contains(text(),'删除')]")[1].click() get_elements(driver, ('xpath', "//button[contains(text(),'确认')]"))[3].click() get_element(driver, ('id', "success")).click() if is_element_present( driver, ('xpath', "//div[contains(text(),'无法删除已经绑定用户的定位卡,请重新选择用户,或者先解绑')]")): sleep(7) unbind_element = "//*[@id='dwk-table']/tbody/tr[%d]/td[10]/a" % i get_element(driver, ('xpath', unbind_element)).click() get_element( driver, ('xpath', "//*[@id='dwk']/form/div[4]/button[3]")).click() get_element(driver, ('xpath', location_element)).click() sleep(0.5) get_elements( driver, ('xpath', "//button[contains(text(),'删除')]"))[1].click() sleep(0.5) get_elements( driver, ('xpath', "//button[contains(text(),'确认')]"))[3].click() get_element(driver, ('id', "success")).click() assert is_element_present(driver, ('xpath', "//td[@colspan='10']")), "定位卡删除失败"
def change_time_of_attendance(driver, remark, file_path, people_number): """ 1 代表单人, 2代表多人 """ try: into_one_level(driver, '任务面板') sleep(1) into_one_level(driver, '发起申请') get_element(driver, ('xpath', "//div[contains(text(),'考勤异常修改')]")).click() get_elements( driver, ('xpath', "//i[@class='glyphicon glyphicon-plus']"))[0].click() sleep(0.5) if people_number == 1: get_element(driver, ('id', "realname")).send_keys('曹永') get_element(driver, ('id', "realsearch")).click() get_elements( driver, ('xpath', "//input[@name='btSelectItem']"))[0].click() get_element(driver, ('xpath', "//a[contains(text(),'确定')]")).click() sleep(0.5) get_element(driver, ('xpath', "//div[@id='uploadFile']/input")).send_keys(file_path) element = "//input[@name='btSelectItem']" if people_number == 2: for i in range(0, len(get_elements(driver, ('xpath', element))), 2): elements = "//input[@name='btSelectItem']" get_elements(driver, ('xpath', elements))[i].click() sleep(0.1) get_element(driver, ('xpath', "//a[contains(text(),'确定')]")).click() setting_input_time(driver) get_element( driver, ('xpath', "//textarea[@class='form-control']")).send_keys(remark) get_elements(driver, ( 'xpath', "//input[@class='form-control input-sm form-date']"))[0].send_keys( get_pass_dates(1)) get_elements( driver, ('xpath', "//input[@class='form-control input-sm form-date-time2']" ))[0].send_keys('08:00') get_elements( driver, ('xpath', "//input[@class='form-control input-sm form-date-time2']" ))[1].send_keys('17:00') get_element(driver, ('xpath', "//button[contains(text(),'提交申请')]")).click() get_element(driver, ('id', "success")).click() sleep(0.5) # 工人个数 worker_number = 5 # 修改1天前的考勤异常 day_num = 1 while True: if is_element_present_3s( driver, ('xpath', "//div[contains(text(),'当前人员暂无考勤记录')]"), 2): print('考勤未生成昨天的数据,请查看定时任务是否开启') workers = random.sample(range(1, 15), worker_number) # 选择工人按钮 get_element( driver, ('xpath', "//button[@id='attendanceUpdateData']")).click() # 清空选择 get_element( driver, ('xpath', "//button[contains(text(),'清空选择')]")).click() if is_element_present_3s( driver, ('xpath', "//a[contains(text(),'›')]"), 1): # 滑动到最下面 get_elements( driver, ('xpath', "//a[contains(text(),'›')]"))[0].send_keys( Keys.DOWN) sleep(0.5) get_elements( driver, ('xpath', "//a[contains(text(),'›')]"))[0].click() for i in range(worker_number): get_elements(driver, ('xpath', element))[workers[i]].click() get_element(driver, ('xpath', "//a[contains(text(),'确定')]")).click() get_elements( driver, ('xpath', "//input[@class='form-control input-sm form-date']" ))[0].clear() get_elements( driver, ('xpath', "//input[@class='form-control input-sm form-date']" ))[0].send_keys(get_pass_dates(day_num)) day_num += 1 get_element( driver, ('xpath', "//button[contains(text(),'提交申请')]")).click() get_element(driver, ('id', "success")).click() sleep(0.5) else: break into_one_level(driver, '我的任务') get_element(driver, ('xpath', "//a[contains(text(),'我发起的')]")).click() sleep(1) get_element( driver, ('xpath', "//button[contains(text(),'修正工人考勤异常')]")).click() get_element( driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr[1]/td[8]/a")).click() assert_element = "//div[@class='tsk-inp col-xs-8' and contains(text(),'%s')]" % remark assert is_element_present(driver, ('xpath', assert_element)) except Exception as e: print(e) bug_photo(driver) assert False
def test_add_company_information(self): web_login(self.browser, self.username, self.password) try: self.browser.find_element_by_xpath( "//button[contains(text(),'新增')]").click() # 资质专业 a = ['公路工程施工总承包资质', '铁路工程施工总承包资质', '港口与航道工程施工总承包资质', '地质专业'] self.browser.find_element_by_xpath( ".//*[@id='add-zizhi']/form/div[4]/input").send_keys( a[random.randint(0, 3)]) # 证书号码 self.browser.find_element_by_xpath( ".//*[@id='add-zizhi']/form/div[6]/input").send_keys( self.certificate_number) # 发证机关 c = '政府' self.browser.find_element_by_xpath( ".//*[@id='add-zizhi']/form/div[8]/input").send_keys(c) # 有效期 d = random.randint(1, 9) self.browser.find_element_by_xpath( "//input[@placeholder='年']").send_keys(d) # 复审时间 self.browser.find_element_by_xpath( "//input[@placeholder='选择日期不得早于今天']").click() self.browser.find_element_by_xpath( "html/body/div[5]/div[3]/table/tbody/tr[6]/td[7]/div").click() # 证书正面 get_element(self.browser, ('id', 'file1')).send_keys(self.file_path) # 证书反面 get_element(self.browser, ('id', 'file2')).send_keys(self.file_path) sleep(1) get_element(self.browser, ('xpath', "//button[contains(text(),'确认')]")).click() self.browser.refresh() new_elem = "//td[contains(text(),%s)]" % self.certificate_number sleep(0.5) select_companys_name = self.browser.find_elements_by_xpath( new_elem) certificate_number_list = [] j = 2 # 获取所有的证书号码 for i in range(int(len(select_companys_name) / 6)): certificate_number_list.insert( i, self.browser.find_elements_by_xpath(new_elem)[j].text) j += 6 print(certificate_number_list) assert self.certificate_number in certificate_number_list, "资质未增加成功" information_element = "//tr[@data-index='0']" sleep(0.5) self.browser.find_elements_by_xpath(information_element)[0].click() # 验证图片是否上传成功 if is_element_present_3s( self.browser, ('xpath', "//div[1]/img[@style='display: none;']"), 3): print("图片未上传成功") assert False else: pass # 删除证书 get_element(self.browser, ('xpath', "//button[contains(text(),'删除')]")).click() get_element(self.browser, ('id', "success")).click() assert is_element_present( self.browser, ('xpath', "//div[@id='LAY_demo2']")), "未弹出删除成功框" sleep(3) certificate_number_list_1 = [] j = 2 sleep(0.5) new_select_companys_name = self.browser.find_elements_by_xpath( new_elem) # 获取所有的证书号码 for i in range(int(len(new_select_companys_name) / 6)): certificate_number_list_1.insert( i, self.browser.find_elements_by_xpath(new_elem)[j].text) j += 6 print(certificate_number_list_1) if self.certificate_number in certificate_number_list_1: print("删除证书失败") assert False else: pass except Exception as e: print(e) bug_photo(self.browser) assert False