def workflow_process_create(ws_driver, sid, worker_id, number=1): # 签订用工合同 if number: start_day = get_pass_dates(2) else: start_day = get_future_date(1) parameter = { "command": { "path": "workflow.consumer.ProcessCreate" }, "parameters": { "sid": sid, "flow_name": "sign_worker_contract", "worker_contract": { "team_id": 1, "worktype_id": 1, "term_type": 1, # 非固定期限 "worker_id": worker_id, # ** 单人** "start_day": start_day, "finish_day": get_future_date(300), "pay_day": 15, "morning_time_on_duty": "8:30", "morning_time_off_duty": "11:30", "afternoon_time_on_duty": "12:00", "afternoon_time_off_duty": "18:00", "payment_method": 1, }, "work_time_pay": [{ "time_unit": "小时", "pay_mount": 20, }] } } result = ws_driver.web_socket_request(parameter) assert result['msg'] == '成功'
def project_delay(driver): try: into_one_level(driver, '工程面板') sleep(1) get_elements(driver, ('xpath', "//a[contains(text(),'设置')]"))[1].click() into_two_level(driver, '项目设置') 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 general_contract(driver, contract_name, contract_awarding, contracting, project_name): """ :param driver: :param contract_name:合同名称 :param contract_awarding: 发包方 :param contracting: 总承包方 :param project_name: 工程名称 :return: """ driver.implicitly_wait(5) try: into_one_level(driver, '任务面板') sleep(0.5) into_two_level(driver, '发起申请') # WebDriverWait(driver, 10).until(lambda x: x.find_element_by_xpath("//div[contains(text(),'新建总包合同')")).click() driver.find_element_by_xpath("//div[contains(text(),'新建总包合同')]").click() # get_element(driver, ('XPATH', "//div[contains(text(),'新建总包合同'")).click() sleep(0.5) driver.find_element_by_xpath("//input[@placeholder='请输入合同名称']").send_keys(contract_name) sleep(0.5) # 发包方 get_element(driver, ('id', 'select2-fbfName-container')).click() get_element(driver, ('xpath', "//input[@type='search']")).send_keys(contract_awarding) sleep(0.5) get_element(driver, ('xpath', "//input[@type='search']")).send_keys(Keys.ENTER) # 承包方 get_element(driver, ('id', "select2-cbfName-container")).click() driver.find_element_by_xpath("//input[@type='search']").send_keys(contracting) sleep(0.5) driver.find_element_by_xpath("//input[@type='search']").send_keys(Keys.ENTER) driver.find_element_by_xpath("//input[@placeholder='请输入工程名称']").send_keys(project_name) select_city(driver) driver.find_element_by_xpath("//input[@placeholder='请输入工程详细地址']").send_keys('南京路168号') driver.find_element_by_xpath("//input[@placeholder='类目(必填)']").send_keys('建筑') driver.find_element_by_xpath("//input[@placeholder='年份(必填)']").click() driver.find_element_by_xpath("//span[@class='year active']").click() driver.find_element_by_xpath("//input[@placeholder='编号(必填)']").send_keys(random.randint(10000, 99999)) project_information = '土方开挖,土方回填,钢筋工程,模板工程,混凝土工程,砌体工程,装饰装修工程等' contract_scope = "售楼部的美女,工程部的汉,项目部的光棍满街转!财务的花,预算的草,施工队的和尚到处跑!食堂的饭,宿舍的床,搞工程的女人吓死郎!" driver.find_elements_by_xpath("//textarea[@placeholder='必填']")[0].send_keys(project_information) driver.find_elements_by_xpath("//textarea[@placeholder='必填']")[1].send_keys(contract_scope) setting_input_time(driver) driver.find_element_by_xpath("//input[@placeholder='选择日期不得晚于计划竣工日期']").send_keys(get_now_dates()) driver.find_element_by_xpath("//input[@placeholder='选择日期不得早于今天']").send_keys(get_future_date(300)) driver.find_elements_by_xpath("//input[@placeholder='必填']")[0].send_keys(random.randint(100, 200)) driver.find_elements_by_xpath("//input[@placeholder='必填']")[1].send_keys(random.randint(100000, 999999)) driver.find_element_by_xpath("//input[@placeholder='请输入项目经理姓名']").send_keys("暂无") driver.find_element_by_xpath("//input[@placeholder='选择日期不得晚于当前日期']").send_keys(get_now_dates()) select_city_choice(driver) driver.find_elements_by_xpath("//input[@placeholder='必填']")[2].send_keys("南京路256号") driver.find_element_by_xpath("//button[@type='submit']").click() print(get_element(driver, ('id', "LAY_demo2")).text) assert get_element(driver, ('id', "LAY_demo2")).text == "成功" except Exception as e: print(e) bug_photo(driver) assert False
def subcontract(driver, project_name, labor_company, sub_contract, labor_people): """ :param driver: 驱动 :param project_name: 工程名称 :param labor_company: 劳务公司 :param sub_contract: 分包合同名称 :param labor_people: 劳务经理 :return: """ try: into_one_level(driver, '任务面板') sleep(0.5) into_two_level(driver, '发起申请') driver.find_element_by_xpath( "//div[contains(text(),'新建分包合同')]").click() driver.find_element_by_xpath( "//span[contains(text(),'输入工程名称')]").click() get_element(driver, ( 'xpath', "//input[@class='select2-search__field']")).send_keys(project_name) sleep(0.5) get_element( driver, ('xpath', "//input[@class='select2-search__field']")).send_keys( Keys.ENTER) sleep(1) driver.find_element_by_xpath( "//span[contains(text(),'输入公司关键字查找')]").click() get_element(driver, ('xpath', "//input[@class='select2-search__field']" )).send_keys(labor_company) sleep(0.5) get_element( driver, ('xpath', "//input[@class='select2-search__field']")).send_keys( Keys.ENTER) # 分包合同名称 get_elements( driver, ('xpath', "//input[@placeholder='必填']"))[0].send_keys(sub_contract) information = "地基与基础、建筑装饰装修、建筑幕墙、钢结构、机电设备安装、电梯安装、消防设施、建筑防水、防腐保温、园林古建筑、爆破与拆除、电信工程、管道工程等" get_element( driver, ('xpath', "//textarea[@placeholder='选填']")).send_keys(information) setting_input_time(driver) get_element( driver, ('xpath', "//input[@placeholder='选择日期不得晚于计划竣工日期']")).send_keys( get_pass_dates(2)) get_element(driver, ('xpath', "//input[@placeholder='选择日期不得早于今天']")).send_keys( get_future_date(299)) get_element( driver, ('xpath', "//input[@placeholder='请输入劳务经理姓名']")).send_keys('咋努瓦') get_elements(driver, ('xpath', "//input[@placeholder='必填']"))[1].send_keys( random.randint(10000, 99999)) QA_standard(driver, random.randint(0, 1)) remuneration_pay(driver, random.randint(0, 1)) the_contract_comes_into_effect(driver, random.randint(0, 1)) material_equipment_management(driver, random.randint(0, 1)) sub_insurance(driver, random.randint(0, 1)) dispute_resolution(driver, random.randint(0, 1)) laws_and_regulations(driver, random.randint(0, 1)) sleep(0.5) driver.find_element_by_xpath("//button[contains(text(),'完成')]").click() print(get_element(driver, ('id', "LAY_demo2")).text) assert get_element(driver, ('id', "LAY_demo2")).text == "成功" 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 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 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