예제 #1
0
def web_login(driver, username, password):
    driver.find_element_by_xpath("//button[contains(text(),'登录')]").click()
    get_element(driver, ('id', "username")).send_keys(username)
    get_element(driver, ('id', "password")).send_keys(password)
    get_element(driver, ('id', "loginButton")).click()
    if is_element_present_3s(driver, ('id', "LAY_demo2"), '2'):
        assert get_element(driver, ('id', "LAY_demo2")).text == "成功:登录", "不在登陆页面,或者网速过慢,请重试"
    elif is_element_present_3s(driver, ('xpath', "//input[@placeholder='输入验证码']"), '2'):
        driver.find_element_by_xpath("//input[@placeholder='输入验证码']").send_keys('tttt')
        driver.find_element_by_id("loginButton").click()
    else:
        if is_element_present_3s(driver, ('id', "username"), '1'):
            driver.find_element_by_xpath("//button[contains(text(),'登录')]").click()
            get_element(driver, ('id', "username")).clear()
            get_element(driver, ('id', "username")).send_keys(username)
            get_element(driver, ('id', "password")).clear()
            get_element(driver, ('id', "password")).send_keys(password)
            get_element(driver, ('id', "loginButton")).click()
            if is_element_present_3s(driver, ('id', "LAY_demo2"), '2'):
                pass
            else:
                driver.get_screenshot_as_file(screenshot_path())
                assert False, "登陆失败"
    if is_element_present_3s(driver, ('xpath', "//input[@placeholder='输入验证码']"), '2'):
        driver.find_element_by_xpath("//input[@placeholder='输入验证码']").send_keys('tttt')
        driver.find_element_by_id("loginButton").click()
def upload_and_delete_file(driver):
    file_type_list = ('xlsx', 'docx', 'pdf', 'png', 'pptx', 'zip', 'jpg')
    # 随机选取一个文件夹
    file_type = random.choice(file_type_list)
    a = file_path(file_type)
    print(a)
    get_element(driver, ('xpath', "//input[@type='file']")).send_keys(a)
    element = "//p[contains(text(),'%s.%s')]" % (file_type, file_type)
    #  判断文件状态
    assert is_element_present_3s(driver, ('xpath', element),
                                 6), "上传%s文件失败" % file_type
    sleep(0.5)
    #  删除文件状态
    if is_element_present_3s(driver, ('xpath', element)):
        # 右击文件
        sleep(1)
        ActionChains(driver).context_click(
            get_element(driver, ('xpath', element))).perform()
        sleep(0.3)
        get_element(driver, ('xpath', "//a[contains(text(),'删除')]")).click()
    else:
        pass
    if is_element_present_3s(driver, ('xpath', element)):
        print('删除失败')
        assert False
    else:
        print('删除成功')
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
예제 #4
0
def web_employee_registration(browser, name, mobile, password, company_name):
    # 企业员工注册
    """

    :param browser:
    :param name:
    :param mobile:
    :param password:
    :param company_name:
    :return:
    """
    browser.find_element_by_xpath("//button[contains(text(),'注册')]").click()
    sleep(0.5)
    browser.find_element_by_xpath("//div[contains(text(),'企业员工')]").click()
    get_element(browser, ('xpath', "//input[@data-pattern-message='请输入正确的手机号码']")).send_keys(mobile)
    sleep(0.5)
    get_elements(browser, ('xpath', "//span[contains(text(),'点击获取验证码')]"))[0].click()
    if is_element_present_3s(browser, ('xpath', "//div[contains(text(),'此号码已经存在,无需注册')]"), 5):
        get_element(browser, ('id', 'username')).send_keys(get_mobile())
    if is_element_present_3s(browser, ('xpath', "//input[@data-tip='请输入真实姓名']"), 4):
        get_element(browser, ('xpath', "//input[@placeholder='手机验证码']")).send_keys('11111')
    else:
        browser.find_element_by_xpath("//div[contains(text(),'企业员工')]").click()
        get_element(browser, ('xpath', "//input[@data-pattern-message='请输入正确的手机号码']")).send_keys(mobile)
        get_element(browser, ('xpath', "//input[@placeholder='短信校验码']")).clear()
        get_element(browser, ('xpath', "//input[@placeholder='短信校验码']")).send_keys('11111')
    get_element(browser, ('xpath', "//input[@data-tip='请输入真实姓名']")).send_keys(name)
    get_element(browser, ('id', "password1")).send_keys(password)
    get_element(browser, ('xpath', "//input[@data-tip='请再新输入密码']")).send_keys(password)
    get_element(browser, ('xpath', "//b[@role='presentation']")).click()
    get_element(browser, ('xpath', "//input[@class='select2-search__field' and @type='search']")).send_keys(
        company_name)
    sleep(0.5)
    get_element(browser, ('xpath', "//input[@class='select2-search__field' and @type='search']")).send_keys(Keys.ENTER)
    get_element(browser, ('xpath', "//input[@class='agree-input']")).click()
    get_element(browser, ('xpath', "//button[contains(text(),'创建账户')]")).click()
    sleep(0.5)
    a = get_element(browser, ('xpath', "//div[contains(text(),'成功:公司职员注册')]")).text
    if '成功:公司职员注册' == a:
        pass
    else:
        print("失败:公司职员注册")
        bug_photo(browser)
        assert False
    sleep(2)
    browser.find_element_by_xpath("//button[contains(text(),'登录')]").click()
    get_element(browser, ('id', "username")).send_keys(mobile)
    get_element(browser, ('id', "password")).send_keys(password)
    get_element(browser, ('id', "loginButton")).click()
예제 #5
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
def handle_permissions_popovers(driver):
    if is_element_present_3s(
            driver,
        ('xpath', "//android.widget.TextView[@text='第 1 项权限(共 2 项)']")):
        get_element(driver,
                    ('xpath', "//android.widget.Button[@text='允许']")).click()
        sleep(1)
        if is_element_present_3s(
                driver,
            ('xpath', "//android.widget.TextView[@text='第 2 项权限(共 2 项)']")):
            get_element(
                driver,
                ('xpath', "//android.widget.Button[@text='允许']")).click()
        else:
            pass
    else:
        pass
def agree_with_permissions(driver):
    # 小米处理权限的方式 全部允许
    if is_element_present_3s(driver, ('id', 'android:id/button1'), 3):
        i = 0
        while 1:
            get_element(driver, ('id', "android:id/button1")).click()
            sleep(1)
            if i == 3:
                break
            i += 1
예제 #8
0
def android_logout(driver):
    try:
        get_element(driver,
                    ('id', 'com.zld.zld_face_rec_app:id/ll_account')).click()
        get_element(
            driver,
            ('id', 'com.zld.zld_face_rec_app:id/btn_sign_out')).click()
        get_element(
            driver,
            ('id', 'com.zld.zld_face_rec_app:id/tv_positive_btn')).click()
        assert is_element_present_3s(
            driver, ('id', 'com.zld.zld_face_rec_app:id/et_name')), '登出失败'
    except Exception as e:
        print(e)
def verify_real_name(driver, name, identity, path1, path2):
    """

    :param driver:
    :param name: 姓名
    :param identity: 身份证号
    :param path1: 身份证正面路径
    :param path2:身份证反面路径
    :return:
    """
    sleep(1)
    get_element(driver, ('id', 'dropdownMenu-set')).click()
    if is_element_present_3s(driver, ('xpath', "//a[contains(text(),'实名认证')]"),
                             2):
        sleep(1)
        get_element(driver, ('xpath', "//a[contains(text(),'实名认证')]")).click()
    else:
        pass
    if is_element_present(
            driver, ('xpath', "//button[@class='zdy-btn-blue reg-btn']")):
        sleep(4)
        get_element(
            driver,
            ('xpath', "//button[@class='zdy-btn-blue reg-btn']")).click()
        get_element(driver,
                    ('xpath', "//input[@placeholder='真实姓名(必须填写)']")).clear()
        get_element(
            driver,
            ('xpath', "//input[@placeholder='真实姓名(必须填写)']")).send_keys(name)
        get_element(driver,
                    ('xpath',
                     "//input[@placeholder='身份证号(必须填写)']")).send_keys(identity)
        get_element(driver, ('id', "file1")).send_keys(path1)
        get_element(driver, ('id', "file2")).send_keys(path2)
        driver.find_element_by_xpath(
            "//button[contains(text(),'完成认证')]").click()
        sleep(5)
        if is_element_present(driver,
                              ('xpath', "//a[contains(text(),'个人面板')]")):
            assert get_element(driver,
                               ('id', 'dropdownMenu-set')).text == name, "认证失败"
        else:
            bug_photo(driver)
            assert False, "没跳转到实名认证后的页面"
    else:
        print("该用户已经实名认证")
예제 #10
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
예제 #11
0
def android_login(driver, username, password):
    try:
        get_element(
            driver,
            ('id', "com.zld.zld_face_rec_app:id/et_name")).send_keys(username)
        get_element(
            driver,
            ('id', "com.zld.zld_face_rec_app:id/et_pwd")).send_keys(password)
        get_element(driver,
                    ('id', "com.zld.zld_face_rec_app:id/btn_login")).click()
        # 通过定位 点击第一个班组
        sleep(2)
        driver.tap([(0, 231), (1080, 420)], 100)
        sleep(1)
        agree_with_permissions(driver)
        sleep(1)
        assert is_element_present_3s(
            driver, ('id', "com.zld.zld_face_rec_app:id/fl_message")), '登陆失败'
    except Exception as e:
        print(e)
        bug_photo(driver)
        assert False
예제 #12
0
def web_workman_register(browser, mobile, code, password):
    # 工人注册
    """

    :param browser:
    :param mobile:
    :param code:
    :param password:
    :return:
    """
    try:
        browser.find_element_by_xpath("//button[contains(text(),'注册')]").click()
        sleep(1)
        get_element(browser, ('id', 'username')).send_keys(mobile)
        browser.find_element_by_xpath("//span[contains(text(),'点击获取验证码')]").click()
        new_mobile = get_mobile()
        if is_element_present_3s(browser, ('xpath', "//div[contains(text(),'此号码已经存在,无需注册')]"), 3):
            get_element(browser, ('id', 'username')).send_keys(new_mobile)
            browser.find_element_by_xpath("//span[contains(text(),'点击获取验证码')]").click()
            get_elements(browser, ('xpath', "//input[@placeholder='短信校验码']"))[0].send_keys(code)
            get_element(browser, ('id', "password")).send_keys(password)
            get_element(browser, ('id', 'repassword')).send_keys(password)
            sleep(1)
            get_element(browser, ('id', 'repassword')).click()
            get_element(browser, ('xpath', "//input[@class='agree-input']")).click()
            browser.find_element_by_xpath("//button[contains(text(),'创建账户')]").click()
            sleep(2)
            browser.find_element_by_xpath("//button[contains(text(),'登录')]").click()
            get_element(browser, ('id', "username")).send_keys(mobile)
            get_element(browser, ('id', "password")).send_keys(password)
            get_element(browser, ('id', "loginButton")).click()
            sleep(3)
        else:
            get_elements(browser, ('xpath', "//input[@placeholder='手机验证码']"))[0].send_keys(code)
            get_element(browser, ('id', "password")).send_keys(password)
            get_element(browser, ('id', 'repassword')).send_keys(password)
            sleep(1)
            get_element(browser, ('id', 'repassword')).click()
            get_element(browser, ('xpath', "//input[@class='agree-input']")).click()
            browser.find_element_by_xpath("//button[contains(text(),'创建账户')]").click()
            sleep(0.5)
            if is_element_present_3s(browser,
                                     ('xpath', "//span[@class='text-muted tel-tip' and contains(text(),'必须填写')]"),
                                     2):
                get_element(browser, ('id', 'username')).clear()
                get_element(browser, ('id', 'username')).send_keys(mobile)
                get_elements(browser, ('xpath', "//input[@placeholder='短信校验码']"))[0].clear()
                get_elements(browser, ('xpath', "//input[@placeholder='短信校验码']"))[0].send_keys(code)
                get_element(browser, ('id', "password")).clear()
                get_element(browser, ('id', "password")).send_keys(password)
                get_element(browser, ('id', 'repassword')).clear()
                get_element(browser, ('id', 'repassword')).send_keys(password)
                sleep(0.5)
                get_element(browser, ('id', 'repassword')).click()
                sleep(0.1)
                browser.find_element_by_xpath("//button[contains(text(),'创建账户')]").click()
                sleep(2)
            browser.find_element_by_xpath("//button[contains(text(),'登录')]").click()
            get_element(browser, ('id', "username")).send_keys(mobile)
            get_element(browser, ('id', "password")).send_keys(password)
            get_element(browser, ('id', "loginButton")).click()
        return mobile
    except Exception as e:
        print(e)
        print("工人注册失败")
        assert False
예제 #13
0
def evaluation_of_worker(driver, workers_name, status='立即添加评价'):
    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)
        if status == '立即添加评价':
            get_element(driver,
                        ('xpath', "//button[contains(text(),'评价')]")).click()
        elif status == '修改评价':
            get_element(
                driver,
                ('xpath', "//button[contains(text(),'修改评价')]")).click()
        else:
            print('使用方法不正确')
        leavel = ('很差', '差', '一般', '好', '很好')
        level = []
        for i in range(3):
            level.insert(i, random.choice(leavel))
            # 技能水平 工作态度 团队精神
            element = "//img[@title='%s']" % level[i]
            get_elements(driver, ('xpath', element))[i].click()
        if status == '立即添加评价':
            get_element(driver,
                        ('xpath',
                         "//textarea[@placeholder='请输入评价']")).send_keys('good')
            get_element(driver,
                        ('xpath', "//button[contains(text(),'保存')]")).click()
            sleep(2)
            if is_element_present_3s(driver,
                                     ('xpath', "//p[contains(text(),'good')]"),
                                     2):
                pass
            else:
                bug_photo(driver)
                assert False
        elif status == '修改评价':
            get_element(driver,
                        ('xpath', "//textarea[@placeholder='请输入评价']")).clear()
            get_element(
                driver,
                ('xpath',
                 "//textarea[@placeholder='请输入评价']")).send_keys('again good')
            get_element(driver,
                        ('xpath', "//button[contains(text(),'保存')]")).click()
            sleep(2)
            if is_element_present_3s(
                    driver, ('xpath', "//p[contains(text(),'again good')]"),
                    2):
                pass
            else:
                bug_photo(driver)
                assert False
        else:
            print('使用方法不正确')
    except Exception as e:
        print(e)
        bug_photo(driver)
        assert False
예제 #14
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
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
예제 #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', "//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
예제 #17
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
예제 #18
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('删除成功')
 def test_add_company_information(self):
     web_login(self.browser, self.username, self.password)
     try:
         self.browser.find_element_by_xpath(
             "//button[contains(text(),'新增')]").click()
         # 资质专业
         a = ['公路工程施工总承包资质', '铁路工程施工总承包资质', '港口与航道工程施工总承包资质', '地质专业']
         self.browser.find_element_by_xpath(
             ".//*[@id='add-zizhi']/form/div[4]/input").send_keys(
                 a[random.randint(0, 3)])
         # 证书号码
         self.browser.find_element_by_xpath(
             ".//*[@id='add-zizhi']/form/div[6]/input").send_keys(
                 self.certificate_number)
         # 发证机关
         c = '政府'
         self.browser.find_element_by_xpath(
             ".//*[@id='add-zizhi']/form/div[8]/input").send_keys(c)
         # 有效期
         d = random.randint(1, 9)
         self.browser.find_element_by_xpath(
             "//input[@placeholder='年']").send_keys(d)
         # 复审时间
         self.browser.find_element_by_xpath(
             "//input[@placeholder='选择日期不得早于今天']").click()
         self.browser.find_element_by_xpath(
             "html/body/div[5]/div[3]/table/tbody/tr[6]/td[7]/div").click()
         # 证书正面
         get_element(self.browser,
                     ('id', 'file1')).send_keys(self.file_path)
         # 证书反面
         get_element(self.browser,
                     ('id', 'file2')).send_keys(self.file_path)
         sleep(1)
         get_element(self.browser,
                     ('xpath', "//button[contains(text(),'确认')]")).click()
         self.browser.refresh()
         new_elem = "//td[contains(text(),%s)]" % self.certificate_number
         sleep(0.5)
         select_companys_name = self.browser.find_elements_by_xpath(
             new_elem)
         certificate_number_list = []
         j = 2
         # 获取所有的证书号码
         for i in range(int(len(select_companys_name) / 6)):
             certificate_number_list.insert(
                 i,
                 self.browser.find_elements_by_xpath(new_elem)[j].text)
             j += 6
         print(certificate_number_list)
         assert self.certificate_number in certificate_number_list, "资质未增加成功"
         information_element = "//tr[@data-index='0']"
         sleep(0.5)
         self.browser.find_elements_by_xpath(information_element)[0].click()
         # 验证图片是否上传成功
         if is_element_present_3s(
                 self.browser,
             ('xpath', "//div[1]/img[@style='display: none;']"), 3):
             print("图片未上传成功")
             assert False
         else:
             pass
         # 删除证书
         get_element(self.browser,
                     ('xpath', "//button[contains(text(),'删除')]")).click()
         get_element(self.browser, ('id', "success")).click()
         assert is_element_present(
             self.browser, ('xpath', "//div[@id='LAY_demo2']")), "未弹出删除成功框"
         sleep(3)
         certificate_number_list_1 = []
         j = 2
         sleep(0.5)
         new_select_companys_name = self.browser.find_elements_by_xpath(
             new_elem)
         # 获取所有的证书号码
         for i in range(int(len(new_select_companys_name) / 6)):
             certificate_number_list_1.insert(
                 i,
                 self.browser.find_elements_by_xpath(new_elem)[j].text)
             j += 6
         print(certificate_number_list_1)
         if self.certificate_number in certificate_number_list_1:
             print("删除证书失败")
             assert False
         else:
             pass
     except Exception as e:
         print(e)
         bug_photo(self.browser)
         assert False