예제 #1
0
def verify_worker_exists(driver, workers_name):
    #  平台运维验证工人是否存在
    try:
        into_one_level(driver, '运维面板')
        sleep(0.5)
        into_two_level(driver, '注册用户管理')
        # 查询工人姓名
        get_element(
            driver,
            ('xpath', "//input[@placeholder='工人姓名']")).send_keys(workers_name)
        # 搜索
        get_element(driver,
                    ('xpath', "//button[contains(text(),'搜索')]")).click()
        if is_element_present_3s(driver, ('xpath', "//tbody/tr/td[2]/a"), 3):
            get_element(driver, ('xpath', "//tbody/tr/td[2]/a")).click()
            sleep(1)
            role = get_element(
                driver,
                ('xpath', "//*[@id='basic']/div/div[2]/div[4]/div/span")).text
            print(role)
            assert role == '签约工人'
        else:
            print('签订终止合同工人的合同失败')
            assert False
        sleep(1.5)
    except Exception as e:
        print(e)
        bug_photo(driver)
        assert False
예제 #2
0
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
예제 #3
0
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
예제 #4
0
def workers_review(driver, worker_name):
    try:
        into_one_level(driver, "任务面板")
        sleep(0.5)
        into_two_level(driver, "我的任务")
        get_element(driver,
                    ('xpath', "//button[contains(text(),'签订用工合同')]")).click()
        get_element(
            driver,
            ('xpath',
             "//*[@id='task-mytask-table']/tbody/tr[1]/td[9]/a")).click()
        get_element(
            driver,
            ('xpath', "//button[@class='btn btn-sm btn-success']")).click()
        get_element(driver, ('xpath', "//textarea")).send_keys('s')
        get_element(driver,
                    ('xpath', "//a[@class='layui-layer-btn0']")).click()
        sleep(10)
        driver.find_element_by_xpath("//a[contains(text(),'我审核过的')]").click()
        sleep(2)
        worker_name += '用工合同签订审核'
        element_len = get_elements(
            driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr"))
        title_text = []
        for i in range(1, len(element_len)):
            element = "//*[@id='task-mytask-table']/tbody/tr[%d]/td[4]" % i
            text = get_element(driver, ('xpath', element)).text
            title_text.insert(i, text)
            print(title_text)
        information = '用工合同签订失败'
        assert worker_name in title_text, "%s" % information
    except Exception as e:
        print(e)
        bug_photo(driver)
        assert False
예제 #5
0
def contract_workflow(driver, contract_name, information):
    """

    :param information: 错误提示
    :param driver:
    :param contract_name: 合同名称
    :return:
    """
    into_one_level(driver, '任务面板')
    sleep(0.5)
    into_two_level(driver, '我的任务')
    get_element(
        driver,
        ('xpath', "//*[@id='task-mytask-table']/tbody/tr[1]/td[8]/a")).click()
    get_element(
        driver,
        ('xpath', "//button[@class='btn btn-sm btn-success']")).click()
    get_element(driver, ('xpath', "//textarea")).send_keys('s')
    get_element(driver, ('xpath', "//a[@class='layui-layer-btn0']")).click()
    sleep(10)
    driver.find_element_by_xpath("//a[contains(text(),'我审核过的')]").click()
    sleep(2)
    contract_name += '签订审核'
    element_len = get_elements(
        driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr"))
    title_text = []
    for i in range(1, len(element_len)):
        element = "//*[@id='task-mytask-table']/tbody/tr[%d]/td[4]" % i
        text = get_element(driver, ('xpath', element)).text
        title_text.insert(i, text)
        print(title_text)
    information += '签订失败'
    assert contract_name in title_text, "%s" % information
def upload_file_document_library(driver):
    # 台账管理,上传专项检查文件、 查看文件上传是否成功、
    into_one_level(driver, '工程面板')
    sleep(1)
    into_two_level(driver, '台账管理')
    sleep(0.5)
    # 获取所有的文件夹
    folder_number = len(
        get_elements(
            driver,
            ('xpath', "//div[@class='col-sm-2 text-center type-item']/p")))
    # 文件夹的名称
    for i in range(folder_number):
        folder_name = get_elements(
            driver,
            ('xpath',
             "//div[@class='col-sm-2 text-center type-item']/p"))[i].text
        print(folder_name)
        element = "//p[contains(text(),'%s')]" % folder_name
        get_element(driver, ('xpath', element)).click()
        if folder_name in ('考勤记录表', '工资单', '银行代发'):

            get_elements(driver, (
                'xpath',
                "//div[@class='col-sm-2 text-center type-item search-month-name']"
            ))[0].click()
        upload_and_delete_file(driver)
        driver.refresh()
        sleep(1)
예제 #7
0
def attendance_machine_login(driver):
    into_one_level(driver, '工程面板')
    sleep(1)
    get_elements(driver, ('xpath', "//a[contains(text(),'设置')]"))[1].click()
    into_two_level(driver, '考勤机设置')
    get_elements(
        driver,
        ('xpath',
         "//i[@class='glyphicon glyphicon-facetime-video']"))[0].click()
    # 得到selenium打开的浏览器的所有句柄
    all_hand = driver.window_handles
    # 切换句柄
    driver.switch_to_window(all_hand[-1])
    get_element(driver, ('id', 'firstname')).clear()
    sleep(0.5)
    get_element(driver, ('id', 'firstname')).send_keys('hpface固定ipc测试')
    get_element(driver, ('id', 'lastname')).send_keys('123456')
    get_element(driver,
                ('xpath', "//button[@class='btn btn-primary']")).click()
    sleep(0.5)
    if get_element(driver, ('id', 'LAY_demo2')).text == '成功:订阅':
        pass
    else:
        bug_photo(driver)
        assert False
    driver.close()
    driver.switch_to_window(all_hand[0])
예제 #8
0
def delete_area(driver):
    # 删除区域
    into_one_level(driver, '工程面板')
    sleep(1)
    get_elements(driver, ('xpath', "//a[contains(text(),'设置')]"))[1].click()
    into_two_level(driver, '项目设置')
    # 区域个数
    project_area_elements = "//div[@class='select-area-util-item select-area-util-area']"

    new_area_name = []
    number = int(len(get_elements(driver, ('xpath', project_area_elements))))
    for i in range(number):
        new_area_name.insert(
            i,
            get_elements(driver, ('xpath', project_area_elements))[i].text)
    project_element = "//div[@class='select-area-util-item select-area-util-area'and contains(text(),'%s')]" % \
                      new_area_name[number - 1]
    delete_project_element = project_element + "/div/div[3]"
    ActionChains(driver).move_to_element(
        get_element(driver, ('xpath', project_element))).perform()
    sleep(1)
    get_element(driver, ('xpath', delete_project_element)).click()
    get_element(driver, ('id', 'success')).click()
    sleep(2)
    new_number = int(
        len(get_elements(driver, ('xpath', project_area_elements))))
    print(new_number, number)
    sleep(2)
    if number == int(new_number + 1):
        print('删除区域成功')
    else:
        bug_photo(driver)
        assert False
예제 #9
0
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
예제 #10
0
def operation_the_all_workflow(driver):
    # 全部通过工作流
    prompt = None
    into_one_level(driver, '任务面板')
    sleep(1)
    into_one_level(driver, '我的任务')
    while True:
        if is_element_present_3s(
                driver, ('xpath', "//button[contains(text(),'请假工作流')]")):
            get_element(
                driver,
                ('xpath', "//button[contains(text(),'请假工作流')]")).click()
        elif is_element_present_3s(
                driver, ('xpath', "//button[contains(text(),'工件完成工作流')]"), 1):
            get_element(
                driver,
                ('xpath', "//button[contains(text(),'工件完成工作流')]")).click()
        elif is_element_present_3s(
                driver, ('xpath', "//button[contains(text(),'加班工作流')]"), 1):
            get_element(
                driver,
                ('xpath', "//button[contains(text(),'加班工作流')]")).click()
        elif is_element_present_3s(
                driver, ('xpath', "//button[contains(text(),'修正工人考勤异常')]"), 1):
            get_element(
                driver,
                ('xpath', "//button[contains(text(),'修正工人考勤异常')]")).click()
        else:
            prompt = '暂无工作流'
        print(prompt)
        if prompt == '暂无工作流':
            break
        else:
            get_element(
                driver,
                ('xpath', "//button[contains(text(),'全选')]/i")).click()
            get_element(driver,
                        ('xpath', "//button[contains(text(),'通过')]")).click()
            get_element(
                driver,
                ('xpath', "//textarea[@placeholder='必填']")).send_keys('all')
            get_element(driver,
                        ('xpath', "//a[contains(text(),'确定')]")).click()
            driver.refresh()
            sleep(1.5)
            get_element(driver,
                        ('xpath', "//button[contains(text(),'所有')]")).click()
            if is_element_present_3s(driver,
                                     ('xpath', "//a[contains(text(),'详情')]")):
                pass
            else:
                break
예제 #11
0
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
예제 #12
0
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_now_dates())
        get_element(driver, ('xpath', "//input[@placeholder='选择日期不得早于今天']")).send_keys(get_future_date(299))
        driver.find_element_by_xpath("//span[contains(text(),'输入姓名查找')]").click()
        get_element(driver, ('xpath', "//input[@class='select2-search__field']")).send_keys(labor_people)
        sleep(1)
        get_element(driver, ('xpath', "//input[@class='select2-search__field']")).send_keys(Keys.ENTER)
        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
예제 #13
0
def update_PM(driver):
    into_one_level(driver, '工程面板')
    sleep(1)
    get_elements(driver, ('xpath', "//a[contains(text(),'设置')]"))[1].click()
    sleep(1)
    get_element(driver, ('xpath', "//button[contains(text(),'修改项目经理')]")).click()
    get_element(driver, ('xpath', "//select[@class='form-control input-sm']/option[2]")).click()
    get_element(driver, ('xpath', "//button[@class='btn btn-primary btn-sm']")).click()
    get_element(driver, ('id', 'success')).click()
    try:
        '更新成功' == get_element(driver, ('id', 'LAY_demo2')).text
    except Exception as e:
        print(e)
        bug_photo(driver)
        assert False
예제 #14
0
def initiate_artifacts(driver, file_path):
    # 工件审核
    into_one_level(driver, '任务面板')
    sleep(1)
    into_one_level(driver, '发起申请')
    get_element(driver, ('xpath', "//div[contains(text(),'工件审核')]")).click()
    sleep(0.5)
    get_elements(
        driver,
        ('xpath', "//i[@class='glyphicon glyphicon-plus']"))[0].click()
    input_element = "//*[@id='lay-user-f']/tbody/tr[1]/td[1]/input"
    get_element(driver, ('xpath', input_element)).click()
    get_element(driver, ('xpath', "//a[contains(text(),'确定')]")).click()
    element = "//select[@class='form-control input-sm']/option[2]"
    try:
        get_element(driver, ('xpath', element)).click()
    except Exception as e:
        print(e)
        assert False, "没有此工件"
    get_element(driver, ('xpath', "//input[@placeholder='数量为整数']")).send_keys(
        random.randint(1, 9))
    setting_input_time(driver)
    get_element(driver,
                ('xpath', "//input[@placeholder='选择日期需小于或等于今天']")).send_keys(
                    get_now_dates())
    get_elements(
        driver,
        ('xpath', "//div[@class='col-sm-6']/input[1]"))[2].send_keys('优秀')
    get_element(driver,
                ('xpath', "//input[@data-min-message='输入值不能小于0']")).send_keys(
                    random.randint(1, 100))
    get_element(
        driver,
        ('xpath', "//div[@id='uploadFile']/input")).send_keys(file_path)
    get_element(driver, ('xpath', "//button[contains(text(),'提交申请')]")).click()
    sleep(0.5)
    get_element(driver, ('id', 'success')).click()
    sleep(1)
    try:
        '成功' == get_element(
            driver,
            ('xpath',
             "//div[@class='layui-layer-content layui-layer-padding']")).text
    except Exception as e:
        print(e)
        bug_photo(driver)
        assert False
예제 #15
0
def termination_of_the_contract(driver, workers_name):
    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()
        get_elements(
            driver,
            ('xpath', "//a[contains(text(),'查看详情') and @class='table-a-link']"
             ))[1].click()
        sleep(1.5)
        get_element(driver,
                    ('xpath', "//button[contains(text(),'合同终止')]")).click()
        get_element(driver, ('id', 'success')).click()
        assert get_element(driver,
                           ('xpath', "//div[@id='LAY_demo2']")).text == '成功'
        sleep(3)
        get_element(
            driver,
            ('xpath',
             "//div[@id='table-toolbar']/input")).send_keys(workers_name)
        get_element(driver,
                    ('xpath', "//div[@id='table-toolbar']/button")).click()
        sleep(1)
        if is_element_present_3s(
                driver,
            ('xpath',
             "//a[contains(text(),'查看详情') and @class='table-a-link']"), 2):
            assert False, '终止合同后,还可以搜到工人'
        else:
            pass
    except Exception as e:
        print(e)
        bug_photo(driver)
        assert False
예제 #16
0
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
예제 #17
0
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
예제 #18
0
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
예제 #19
0
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
예제 #20
0
def setting_area(driver, area_name):
    '''

    :param driver:
    :param area_name: 区域名称
    :return:
    '''
    # 增加区域
    into_one_level(driver, '工程面板')
    sleep(1)
    get_elements(driver, ('xpath', "//a[contains(text(),'设置')]"))[1].click()
    into_two_level(driver, '项目设置')
    # 增加区域
    get_element(driver, ('xpath', "//div[contains(text(),'添加区域 ')]")).click()
    sleep(1)
    class_name = 'MozillaWindowClass'
    title_name = '杭州智链达建筑工人服务平台 - Mozilla FireFox'
    # 查找句柄
    hwnd = win32gui.FindWindow(class_name, title_name)
    click_position(hwnd, 146, 177)
    sleep(8)
    get_element(driver, ('xpath', "//button[contains(text(),'开始描点')]")).click()
    click_position(hwnd, 673, 453)
    sleep(0.5)
    click_position(hwnd, 1158, 468)
    sleep(0.5)
    click_position(hwnd, 701, 700)
    sleep(0.5)
    get_element(driver, ('xpath', "//button[contains(text(),'停止描点')]")).click()
    # 区域名称
    get_element(
        driver,
        ('xpath', "//textarea[@name='area-name']")).send_keys(area_name)
    get_element(driver, ('xpath', "//button[contains(text(),'保存')]")).click()
    get_element(driver, ('id', 'success')).click()
    project_area_elements = "//div[@class='select-area-util-item select-area-util-area']"
    area_names = []
    for i in range(len(get_elements(driver,
                                    ('xpath', project_area_elements)))):
        area_names.insert(
            i,
            get_elements(driver, ('xpath', project_area_elements))[i].text)
    try:
        area_name in area_names
    except Exception as e:
        print(e)
        bug_photo(driver)
        assert False
    project_element = "//div[@class='select-area-util-item select-area-util-area'and contains(text(),'%s')]" % area_name
    # 鼠标悬停在元素上面
    ActionChains(driver).move_to_element(
        get_element(driver, ('xpath', project_element))).perform()
    # 修改区域
    update_project_element = project_element + "/div/div[2]"
    sleep(1)
    get_element(driver, ('xpath', update_project_element)).click()
    click_position(hwnd, 146, 177)
    sleep(1)
    get_element(driver, ('xpath', "//button[contains(text(),'开始描点')]")).click()
    click_position(hwnd, 638, 460)
    get_element(driver, ('xpath', "//button[contains(text(),'保存')]")).click()
    get_element(driver, ('id', 'success')).click()
    sleep(0.5)
    try:
        '成功' == get_element(
            driver,
            ('xpath',
             "//div[@class='layui-layer-content layui-layer-padding']")).text
    except Exception as e:
        print(e)
        bug_photo(driver)
        assert False
    sleep(1)
    into_two_level(driver, '考勤机设置')
    attendance_machine_area_names = get_attendance_machine_area_name(driver)
    try:
        area_name in attendance_machine_area_names
    except Exception as e:
        print(e)
        print('增加区域后,没有增加GPS、移动人脸考勤机')
        bug_photo(driver)
        assert False
예제 #21
0
def setting_attendance_machine(driver,
                               attendance_machine_name,
                               machine_type_id=1):
    """

    :param driver:
    :param attendance_machine_name: 考勤机的名称
    :param machine_type_id: 1 固定 2 移动 3 gps (目前2,3不支持)
    :return:
    """
    into_one_level(driver, '工程面板')
    sleep(1)
    get_elements(driver, ('xpath', "//a[contains(text(),'设置')]"))[1].click()
    into_two_level(driver, '考勤机设置')
    # 增加考勤机
    sleep(1)
    get_element(driver, ('xpath', "//button[contains(text(),'增加')]")).click()
    machine_type = "//*[@id='kqj-box']/form/div[1]/div/select/option[%d]" % machine_type_id
    get_element(driver, ('xpath', machine_type)).click()
    get_element(
        driver,
        ('xpath',
         "//div[@id='kqj-box']/form/div[4]/div/input")).send_keys('123456')
    get_element(driver, ('xpath', "//div[@id='kqj-box']/form/div[2]/div/input"
                         )).send_keys(attendance_machine_name)
    sleep(1)
    # 工程区域
    project_areas = len(
        get_elements(
            driver,
            ('xpath', "//*[@id='kqj-box']/form/div[3]/div/select/option")))
    sleep(0.5)
    try:
        project_areas_elements = "//*[@id='kqj-box']/form/div[3]/div/select/option[%s]" % str(
            random.randint(1, project_areas - 2))
        print(project_areas_elements)
    except Exception as e:
        print(e)
        bug_photo(driver)
        assert False, '工程区域点击无响应'
    get_element(driver, ('xpath', project_areas_elements)).click()
    if is_element_present_3s(driver,
                             ('xpath', "//button[contains(text(),'选择位置')]"),
                             3):
        get_element(driver,
                    ('xpath', "//button[contains(text(),'选择位置')]")).click()
        sleep(2)
        class_name = 'MozillaWindowClass'
        title_name = '杭州智链达建筑工人服务平台 - Mozilla FireFox'
        # 查找句柄
        hwnd = win32gui.FindWindow(class_name, title_name)
        click_position(hwnd, 1299, 582)
        sleep(1.5)
        get_element(driver,
                    ('xpath', "//a[@class='layui-layer-btn0']")).click()
    # 确定
    get_element(driver,
                ('xpath', "//button[@class='btn btn-primary']")).click()
    element_len = "//*[@id='engineering-set-table']/tbody/tr"
    number = len(get_elements(driver, ('xpath', element_len)))
    title_list = []
    if '添加成功' == get_element_3s(driver, ('id', "LAY_demo2"), 2).text:
        print('pass')
    else:
        bug_photo(driver)
        assert False
    for i in range(1, number + 1):
        name_elements = "//*[@id='engineering-set-table']/tbody/tr[%d]/td[1]/span" % i
        title_list.insert(i,
                          get_element(driver, ('xpath', name_elements)).text)
    try:
        attendance_machine_name in title_list
    except Exception as e:
        print(e)
        bug_photo(driver)
        assert False
    # s删除考勤机
    # 删除按钮
    delete_element = "//*[@id='engineering-set-table']/tbody/tr[%d]/td[7]/a[2]" % len(
        get_elements(driver, ('xpath', element_len)))
    # 删除考勤机的名字
    delete_element_name = "//*[@id='engineering-set-table']/tbody/tr[%d]/td[1]/span" % len(
        get_elements(driver, ('xpath', element_len)))
    #   考勤机的时候排序不正确,导致的异常
    delete_name = get_element(driver, ('xpath', delete_element_name)).text
    get_element(driver, ('xpath', delete_element)).click()
    get_element(driver, ('id', 'success')).click()
    new_title_list = []
    sleep(1)
    for i in range(1, len(get_elements(driver, ('xpath', element_len))) + 1):
        name_elements = "//*[@id='engineering-set-table']/tbody/tr[%d]/td[1]/span" % i
        new_title_list.insert(
            i,
            get_element(driver, ('xpath', name_elements)).text)
    if delete_name in new_title_list:
        assert False, print(delete_name)
    else:
        print('删除成功')
예제 #22
0
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
예제 #23
0
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
예제 #24
0
def approve_workflow(driver, task_type, many_people=1):
    into_one_level(driver, '任务面板')
    sleep(0.5)
    into_two_level(driver, '我的任务')
    sleep(1)
    if task_type == '修改总包合同结束时间':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
    elif task_type == '工件完成工作流':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
    elif task_type == '请假工作流':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
    elif task_type == '加班工作流':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
    elif task_type == '修正工人考勤异常':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
    elif task_type == '修改用工合同结束时间':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
    # 点击详情
    if many_people == 1:
        try:
            get_element(driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr[1]/td[9]/a")).click()
            sleep(1)
            # 点击通过
            get_element(driver, ('xpath', "//button[@class='btn btn-sm btn-success']")).click()
            # 输入备注
            get_element(driver, ('xpath', "//textarea")).send_keys('s')
            # 点击确定
            get_element(driver, ('xpath', "//a[@class='layui-layer-btn0']")).click()
        except Exception as e:
            print(e)
            bug_photo(driver)
            assert False
    elif many_people == 2:
        get_element(driver, ('xpath', "//i[@class='glyphicon']")).click()
        sleep(1)
        get_element(driver, ('xpath', "//button[contains(text(),'通过')]")).click()
        get_element(driver, ('xpath', "//textarea[@placeholder='必填']")).send_keys('ss')
        get_element(driver, ('xpath', "//a[contains(text(),'确定')]")).click()
    sleep(4)
    get_element(driver, ('xpath', "//a[contains(text(),'我审核过的')]")).click()
    sleep(3)
    if task_type == '修改总包合同结束时间':
        contract_name = '关于浙江如舞亚更工程的总包合同结束时间修改审核'
        element_len = get_elements(driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr"))
        title_text = []
        for i in range(1, len(element_len)+1):
            element = "//*[@id='task-mytask-table']/tbody/tr[%d]/td[4]" % i
            text = get_element(driver, ('xpath', element)).text
            title_text.insert(i, text)
            print(title_text)
        task_type += '签订失败'
        assert contract_name in title_text, "%s" % task_type
    elif task_type == '工件完成工作流':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
        contract_name = '测试工件完成审核', '123完成审核'
        sleep(0.5)
        element_len = get_elements(driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr"))
        title_text = []
        for i in range(1, len(element_len)+1):
            element = "//*[@id='task-mytask-table']/tbody/tr[%d]/td[4]" % i
            text = get_element(driver, ('xpath', element)).text
            title_text.insert(i, text)
            print(title_text)
        task_type += '签订失败'
        if contract_name[0] in title_text:
            pass
        elif contract_name[1] in title_text:
            pass
        else:
            print(task_type)
            assert False
    # 请假工作流
    elif task_type == '请假工作流':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
        try:
            if many_people == 2:
                time_of_duration = '0 天 0 时 1 分', '0 天 0 时 0 分', '0 天 0 时 2 分'
                for i in range(1, 4):
                    element = "//*[@id='task-mytask-table']/tbody/tr[%s]/td[7]" % 1
                    time_text = get_element(driver, ('xpath', element)).text
                    sleep(0.5)
                    print(time_text, '', time_of_duration)
                    assert time_text in time_of_duration
            elif many_people == 1:
                get_elements(driver, ('xpath', "//a[@class='table-a-link']"))[0].click()
                sleep(1)
                text = get_elements(driver, ('xpath', "//div[@class='tsk-inp col-xs-8']"))[3].text
                contract_name = '曹永,', '李嘉鑫,', '吕心泳,'
                assert text in contract_name, '我审核的没有数据' + text
        except Exception as e:
            print(e)
            bug_photo(driver)
            assert False
    #  加班工作流
    elif task_type == '加班工作流':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
        time_of_duration = '0 天 0 时 1 分', '0 天 0 时 0 分', '0 天 0 时 2 分'
        element = "//*[@id='task-mytask-table']/tbody/tr[%s]/td[7]" % 1
        time_text = get_element(driver, ('xpath', element)).text
        sleep(0.5)
        print(time_text, 'in', time_of_duration)
        assert time_text in time_of_duration, time_text + 'not_in' + time_of_duration
    # 修正工人考勤异常
    elif task_type == '修正工人考勤异常':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
        if many_people == 1:
            get_elements(driver, ('xpath', "//a[@class='table-a-link']"))[0].click()
            sleep(1)
            text = get_elements(driver, ('xpath', "//div[@class='tsk-inp col-xs-8']"))[3].text
            contract_name = '曹永', '李嘉鑫', '吕心泳'
            assert text in contract_name, '我审核的没有数据' + text
        elif many_people == 2:
            time_of_duration = '0 天 0 时 1 分', '0 天 0 时 0 分', '0 天 0 时 2 分'
            for i in range(1, 4):
                element = "//*[@id='task-mytask-table']/tbody/tr[%s]/td[7]" % i
                time_text = get_element(driver, ('xpath', element)).text
                sleep(0.5)
                assert time_text in time_of_duration
    # 修改用工合同结束时间
    elif task_type == '修改用工合同结束时间':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
        contract_name = '曹永用工合同结束时间审核'
        element_len = get_elements(driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr"))
        title_text = []
        for i in range(1, len(element_len) + 1):
            element = "//*[@id='task-mytask-table']/tbody/tr[%d]/td[4]" % i
            text = get_element_3s(driver, ('xpath', element), 20).text
            title_text.insert(i, text)
            print(title_text)
        task_type += '签订失败'
        try:
            assert contract_name in title_text
        except Exception as e:
            print(task_type)
            print(e)
            bug_photo(driver)
            assert False
예제 #25
0
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
예제 #26
0
def approve_workflow(driver, task_type):
    into_one_level(driver, '任务面板')
    sleep(0.5)
    into_two_level(driver, '我的任务')
    if task_type == '修改总包合同结束时间':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
    elif task_type == '工件完成工作流':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
    elif task_type == '请假工作流':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
    elif task_type == '加班工作流':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
    elif task_type == '修改出勤时间工作流':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
    elif task_type == '修改用工合同结束时间':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
    # 点击详情
    try:
        get_element(driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr[1]/td[9]/a")).click()
        sleep(1)
        # 点击通过
        get_element(driver, ('xpath', "//button[@class='btn btn-sm btn-success']")).click()
        # 输入备注
        get_element(driver, ('xpath', "//textarea")).send_keys('s')
        # 点击确定
        get_element(driver, ('xpath', "//a[@class='layui-layer-btn0']")).click()
    except Exception as e:
        print(e)
        bug_photo(driver)
        assert False
    sleep(10)
    driver.find_element_by_xpath("//a[contains(text(),'我审核过的')]").click()
    sleep(2)
    if task_type == '修改总包合同结束时间':
        contract_name = '关于浙江如舞亚更工程的总包合同结束时间修改审核'
        element_len = get_elements(driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr"))
        title_text = []
        for i in range(1, len(element_len)+1):
            element = "//*[@id='task-mytask-table']/tbody/tr[%d]/td[4]" % i
            text = get_element(driver, ('xpath', element)).text
            title_text.insert(i, text)
            print(title_text)
        task_type += '签订失败'
        assert contract_name in title_text, "%s" % task_type
    elif task_type == '工件完成工作流':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
        contract_name = '测试工件完成审核'
        sleep(0.5)
        element_len = get_elements(driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr"))
        title_text = []
        for i in range(1, len(element_len)+1):
            element = "//*[@id='task-mytask-table']/tbody/tr[%d]/td[4]" % i
            text = get_element(driver, ('xpath', element)).text
            title_text.insert(i, text)
            print(title_text)
        task_type += '签订失败'
        assert contract_name in title_text, "%s" % task_type
    elif task_type == '请假工作流':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        try:
            get_element(driver, ('xpath', update_contract_element)).click()
        except Exception as e:
            print(e)
            bug_photo(driver)
            assert False
        contract_name = '曹永请假审核', '俞俊鑫、邵雪雷、郝梦影等人请假审核'
        element_len = get_elements(driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr"))
        title_text = []
        for i in range(1, len(element_len)+1):
            element = "//*[@id='task-mytask-table']/tbody/tr[%d]/td[4]" % i
            text = get_element(driver, ('xpath', element)).text
            title_text.insert(i, text)
            print(title_text)
        task_type += '签订失败'
        if contract_name[0] in title_text:
            pass
        elif contract_name[1] in title_text:
            pass
        else:
            bug_photo(driver)
            assert False
    elif task_type == '加班工作流':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
        contract_name = '俞俊鑫、邵雪雷、郝梦影等人加班审核'
        element_len = get_elements(driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr"))
        title_text = []
        for i in range(1, len(element_len)+1):
            element = "//*[@id='task-mytask-table']/tbody/tr[%d]/td[4]" % i
            text = get_element(driver, ('xpath', element)).text
            title_text.insert(i, text)
            print(title_text)
        task_type += '签订失败'
        assert contract_name in title_text, "%s" % task_type
    elif task_type == '修改出勤时间工作流':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
        contract_name = '俞俊鑫、邵雪雷、郝梦影等人修改出勤时间审核'
        element_len = get_elements(driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr"))
        title_text = []
        for i in range(1, len(element_len)+1):
            element = "//*[@id='task-mytask-table']/tbody/tr[%d]/td[4]" % i
            text = get_element(driver, ('xpath', element)).text
            title_text.insert(i, text)
            print(title_text)
        task_type += '签订失败'
        assert contract_name in title_text, "%s" % task_type
    elif task_type == '修改用工合同结束时间':
        update_contract_element = "//button[contains(text(),'%s')]" % str(task_type)
        get_element(driver, ('xpath', update_contract_element)).click()
        contract_name = '曹永用工合同结束时间审核'
        element_len = get_elements(driver, ('xpath', "//*[@id='task-mytask-table']/tbody/tr"))
        title_text = []
        for i in range(1, len(element_len) + 1):
            element = "//*[@id='task-mytask-table']/tbody/tr[%d]/td[4]" % i
            text = get_element_3s(driver, ('xpath', element), 20).text
            title_text.insert(i, text)
            print(title_text)
        task_type += '签订失败'
        try:
            assert contract_name in title_text
        except Exception as e:
            print(task_type)
            print(e)
            bug_photo(driver)
            assert False
 def test_NewCompany(self):
     company_name = get_company_name()
     into_one_level(self.driver, '运维面板')
     into_two_level(self.driver, '注册公司管理')
     self.driver.find_element_by_xpath(
         "//button[contains(text(),'新增')]").click()
     self.driver.find_element_by_xpath(
         "//input[@placeholder='企业名称']").send_keys(company_name)
     self.driver.find_element_by_xpath(
         "//input[@placeholder='0000XX0000']").send_keys(random_str(18))
     # a = self.driver.find_element_by_xpath(".//*[@id='company-address']/div/div[1]/select")
     # a.find_element_by_xpath("//option[@value='北京市']").click()  # 方法1
     self.driver.find_element_by_xpath(
         ".//*[@id='company-address']/div/div[1]/select/option[12]").click(
         )  # 方法2 省
     # Select(a).select_by_value('内蒙古自治区')  # 方法3
     self.driver.find_element_by_xpath(
         ".//*[@id='company-address']/div/div[2]/select/option[2]").click(
         )  # 市
     self.driver.find_element_by_xpath(
         ".//*[@id='company-address']/div/div[3]/select/option[3]").click(
         )  # 区
     self.driver.find_element_by_xpath(
         "//input[@placeholder='输入街道名称']").send_keys('南京路')
     self.driver.find_element_by_xpath(
         "//input[@placeholder='门派号、小区名称、房间号']").send_keys('3号')
     information = '室内装潢及设计、园林绿化、园林绿化工程施工等'
     self.driver.find_element_by_xpath(
         "//textarea[@placeholder='长度不超过500个字符']").send_keys(information)
     get_element(
         self.driver,
         ('xpath',
          "//input[@placeholder='企业固定电话格式 例:0759-7654321']")).send_keys(
              get_telephone())
     self.driver.find_element_by_xpath(
         "//input[@placeholder='输入法人姓名']").send_keys(getRandomName())
     self.driver.find_element_by_xpath(
         "//button[contains(text(),'完成')]").click()
     self.driver.refresh()
     sleep(2)
     elem = "//td[contains(text(),%s)]" % company_name
     get_element(
         self.driver,
         ('xpath',
          "//input[@placeholder='请输入公司名称筛选']")).send_keys(company_name)
     get_element(self.driver,
                 ('xpath', "//button[contains(text(),'搜索')]")).click()
     sleep(1)
     new_company_name = self.driver.find_elements_by_xpath(elem)[0].text
     assert new_company_name == company_name
     get_element(self.driver,
                 ('xpath', "//input[@placeholder='请输入公司名称筛选']")).clear()
     get_element(
         self.driver,
         ('xpath',
          "//input[@placeholder='请输入公司名称筛选']")).send_keys(company_name)
     get_element(self.driver,
                 ('xpath', "//button[contains(text(),'搜索')]")).click()
     elem = "//td[contains(text(),%s)]" % company_name
     select_company_name = self.driver.find_element_by_xpath(elem).text
     assert select_company_name == company_name  # 全称查询公司
     self.driver.find_element_by_xpath(
         "//input[@placeholder='请输入公司名称筛选']").clear()
     self.driver.find_element_by_xpath(
         "//input[@placeholder='请输入公司名称筛选']").send_keys(company_name[1:3])
     self.driver.find_element_by_xpath(
         "//button[contains(text(),'搜索')]").click()
     assert company_name in select_company_name
     new_elem = "//td[contains(text(),%s)]" % company_name
     sleep(0.5)
     select_companys_name = self.driver.find_elements_by_xpath(new_elem)
     company_name_list = []
     j = 0  # 公司的index 规律是每5个就是公司的text
     # 获取所有的公司名称
     for i in range(int(len(select_companys_name) / 5)):
         company_name_list.insert(
             i,
             self.driver.find_elements_by_xpath(new_elem)[j].text)
         j += 5
     print(company_name_list)
     assert company_name in company_name_list  # 包含这个字段的公司,在列表里面
def new_payroll(driver, payroll_name, money):
    # 薪资管理
    try:
        into_one_level(driver, '工程面板')
        sleep(1)
        into_two_level(driver, '薪资管理')
        get_element(driver,
                    ('xpath', "//button[@class='btn btn-primary']")).click()
        # 工程名称
        get_element(driver,
                    ('xpath', "//select[@id='kkkk']/option[2]")).click()
        # 输入工资月份
        get_now_dates()
        setting_input_time(driver)
        r = r'\d{4}-\d{2}'
        text = re.findall(r, get_now_dates())
        get_element(
            driver,
            ('xpath',
             "//input[@class='form-control form-n-y-1']")).send_keys(text)
        # 工资单名称
        get_element(driver, ('id', 'createProllNameAll')).clear()
        sleep(0.2)
        get_element(driver,
                    ('id', 'createProllNameAll')).send_keys(payroll_name)
        # 确定按钮
        get_element(
            driver,
            ('xpath',
             "//button[@class='btn btn-primary proll-btn-com']")).click()
        sleep(1)
        # 增加最后一个人
        get_elements(driver, (
            'xpath',
            "//div[@id='createrProll']/div[3]/div[1]/div[2]/div/div[1]/div/div/div/span[2]"
        ))[-1].click()
        sleep(0.5)
        get_element(driver, ('xpath', "//a[contains(text(),'移除')]")).click()
        sleep(1)
        if is_element_present_3s(driver, ('xpath', "//tr[1]/td[7]/input"), 3):
            print("移除失败")
            assert False
        else:
            pass
        get_elements(driver, (
            'xpath',
            "//div[@id='createrProll']/div[3]/div[1]/div[2]/div/div[1]/div/div/div/span[2]"
        ))[-1].click()
        get_element(driver, ('xpath', "//tr[1]/td[5]/a")).click()
        get_elements(driver,
                     ('xpath', "//input[@class='form-control']"))[1].send_keys(
                         get_bank_card_number()[2:18])
        get_element(driver,
                    ('xpath', "//button[contains(text(),'确定')]")).click()
        # 发放金额
        get_element(driver,
                    ('xpath', "//input[@class='pay-money']")).send_keys(money)
        sleep(3)
        get_element(driver,
                    ('xpath', "//button[contains(text(),'保存')]")).click()
        sleep(0.5)
        get_element(
            driver,
            ('xpath',
             "//table[@id='project-proll-release']/tbody/tr[1]/td[7]/a[1]"
             )).click()
        assert is_element_present_3s(driver,
                                     ('xpath', "//input[@class='pay-money']"),
                                     3), "保存失败"
        sleep(3)
        get_element(driver,
                    ('xpath', "//button[contains(text(),'保存')]")).click()
        sleep(0.5)
        get_element(
            driver,
            ('xpath',
             "//table[@id='project-proll-release']/tbody/tr[1]/td[7]/a[2]"
             )).click()
        sleep(3)
        report = os.path.join(test_report_path(), payroll_name + '.xls')
        import win32com.client
        sleep(1)
        excel = win32com.client.gencache.EnsureDispatch('Excel.Application')
        sleep(0.1)
        wb = excel.Workbooks.Open(report)
        sleep(2)
        wb.SaveAs(report + 'x', FileFormat=51)
        wb.Close()
        excel.Application.Quit()
        # 删除旧的xls
        sleep(0.5)
        os.remove(report)
        new_report = os.path.join(test_report_path(), payroll_name + '.xlsx')
        wb1 = load_workbook(filename=new_report)
        sheets = wb1.get_sheet_names()  # 获取所有的表格
        print(sheets)
        sheets_first = sheets[0]  # 获取第一个表
        ws1 = wb1.get_sheet_by_name(sheets_first)
        print(ws1['F2'].value)
        assert money == ws1['F2'].value, "下载文件内容显示不正确"
        os.remove(new_report)
    except Exception as e:
        bug_photo(driver)
        print(e)
        assert False
예제 #29
0
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
예제 #30
0
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