| | |
| | | from datetime import datetime |
| | | import time |
| | | from selenium.webdriver.common.by import By |
| | | from selenium.webdriver.common.keys import Keys |
| | | |
| | | import pytest |
| | | from selenium import webdriver |
| | |
| | | from po.home_page import HomePage |
| | | from po.test_package_list_page import TestPackageListPage |
| | | from po.share_add_page import ShareAddPage |
| | | from po.answer_page import AnswerPage |
| | | from po.maq_answer_page import MAQAnswerPage |
| | | from comm.my_random import * |
| | | |
| | | |
| | | class TestMAQ: |
| | | |
| | | driver = None |
| | | test_package_name = "MAQ自动测试包-20230711151825" |
| | | test_package_name = "MAQ自动测试包-20230720170011" |
| | | |
| | | def test_login(self): |
| | | @pytest.mark.parametrize('data_read', ["login"], indirect=True) |
| | | def test_login(self, data_read: dict): |
| | | """ |
| | | 打开页面并进行登录测试 |
| | | :param data_read: 执行数据读取的函数并获取到返回值 |
| | | :return: |
| | | """ |
| | | TestMAQ.driver = webdriver.Chrome() |
| | |
| | | login_page = LoginPage(driver) |
| | | try: |
| | | # 打开链接 |
| | | driver.get("http://161.117.57.194/login?lang=zh_CN") |
| | | driver.get(data_read["url"]) |
| | | except: |
| | | # 链接打开出现异常说明链接无法访问,捕获异常但不做处理 |
| | | pass |
| | |
| | | reload_btn.click() |
| | | time.sleep(10) |
| | | except: |
| | | # 出现异常表示不存在刷新按钮,退出循环 |
| | | break |
| | | # 出现异常表示不存在刷新按钮 |
| | | # 接着判断是否存在nginx error! |
| | | try: |
| | | nginx_error = login_page.get_element((By.XPATH, "//strong[text() = 'nginx error!']")) |
| | | # 存在则睡眠10秒 |
| | | time.sleep(10) |
| | | except: |
| | | break |
| | | |
| | | login_page.login("admin", "ots@2021!!", "ots") |
| | | # 输入用户名 |
| | | login_page.send_keys("username_ipt", data_read["username"]) |
| | | # 输入密码 |
| | | login_page.oper_elem("password_ipt", data_read["password"]) |
| | | # 输入验证码 |
| | | login_page.oper_elem("code_ipt", data_read["code"]) |
| | | # 点击登录按钮 |
| | | login_page.oper_elem("login_btn") |
| | | time.sleep(2) |
| | | assert login_page.is_login_success() |
| | | |
| | | def test_create_package(self): |
| | | @pytest.mark.parametrize('data_read', ["MAQ"], indirect=True) |
| | | def test_create_package(self, data_read: dict): |
| | | """ |
| | | 创建测试包 |
| | | :param data_read: 读取数据 |
| | | :return: |
| | | """ |
| | | # 获取driver |
| | |
| | | # 创建home页面的对象 |
| | | home_page = HomePage(driver) |
| | | # 点击左侧菜单进入页面 |
| | | home_page.menu_select("测试包管理/测试包列表") |
| | | |
| | | home_page.menu_select(data_read["menu"]) |
| | | # 创建测试包列表页面的对象 |
| | | test_package_list = TestPackageListPage(driver) |
| | | # 切换到测试包列表页面iframe |
| | | test_package_list.oper_elem("this_iframe") |
| | | time.sleep(2) |
| | | # 点击创建按钮 |
| | | test_package_list.create_btn() |
| | | test_package_list.oper_elem("create_btn") |
| | | # 切换到添加窗口的iframe |
| | | test_package_list.oper_elem("add_iframe") |
| | | # 获取当前时间 |
| | | current_time = datetime.now() |
| | | # 转换为字符串 |
| | |
| | | test_package_name = "MAQ自动测试包-" + time_str |
| | | # 设置测试包名称为类变量 |
| | | TestMAQ.test_package_name = test_package_name |
| | | # 报告企业名称 |
| | | report_company_name = "TAI测试" |
| | | # 测试包类型 |
| | | test_package_type = "人格测试包" |
| | | # 产品包 |
| | | prod_name = "MAQV2" |
| | | # HR邮箱 |
| | | hr_email = "2077506045@qq.com" |
| | | # 有效期 |
| | | invalid_time = "2024-01-01 00:00:00" |
| | | # 测试者邀请邮件语言类型 |
| | | test_email_lang_type = "中文" |
| | | # hr报告邮件语言类型 |
| | | hr_report_email_lang_type = "中文" |
| | | # 报告模板 |
| | | report_template = "MAQV2-Complete-Chinese" |
| | | # 测试者报告邮件语言类型 |
| | | member_report_email_lang_type = "中文" |
| | | |
| | | # 获取创建测试包的数据 |
| | | create_data = data_read["add"] |
| | | # 填写测试包名称 |
| | | test_package_list.testPackageName_input(test_package_name) |
| | | test_package_list.oper_elem("add_testPackageName_input", test_package_name) |
| | | # 填写报告企业名称 |
| | | test_package_list.reportCompanyName_input(report_company_name) |
| | | test_package_list.oper_elem("add_reportCompanyName_input", create_data["company"]) |
| | | # 选择测试包类型 |
| | | test_package_list.testPackageType_select(test_package_type) |
| | | test_package_list.oper_elem("add_testPackageType_select", create_data["type"]) |
| | | # 点击产品包按钮 |
| | | test_package_list.oper_elem("add_prodTree_btn") |
| | | # 切换到prodTree的iframe |
| | | test_package_list.oper_elem("prodTree_iframe") |
| | | # 选择产品包 |
| | | test_package_list.prodTree_select(prod_name) |
| | | # 输入hr邮箱 |
| | | test_package_list.hrReportEmail_input(hr_email) |
| | | # 输入有效期 |
| | | test_package_list.invalidTime_input(invalid_time) |
| | | # 选择邀请邮件语言类型 |
| | | test_package_list.testTemplateLangType_select(test_email_lang_type) |
| | | # 选择HR邮件语言类型 |
| | | test_package_list.hrTemplateLangType_select(hr_report_email_lang_type) |
| | | # 选择报告模板 |
| | | test_package_list.reportTemplate_select(report_template) |
| | | # 点击测试者接收报告 |
| | | test_package_list.autoSendReport_checkbox() |
| | | # 选择测试者报告邮箱语言类型 |
| | | test_package_list.memberReportLangType_select(member_report_email_lang_type) |
| | | test_package_list.oper_elem("prodTree_option", create_data["product"]) |
| | | # 回到上一层iframe |
| | | test_package_list.switch_parent_iframe() |
| | | # 点击确认按钮 |
| | | test_package_list.add_confirm() |
| | | time.sleep(2) |
| | | test_package_list.oper_elem("prodTree_confirm_btn") |
| | | # 输入hr邮箱 |
| | | test_package_list.oper_elem("add_hrEmail_input", create_data["hrEmail"]) |
| | | # 输入有效期并点击以取消日期选择器显示 |
| | | test_package_list.oper_elem("add_invalidTime_input", create_data["invalid"]) |
| | | test_package_list.oper_elem("add_invalidTime_btn") |
| | | # 选择邀请邮件语言类型 |
| | | test_package_list.oper_elem("add_templateLangType_select", create_data["memberLang"]) |
| | | # 选择HR邮件语言类型 |
| | | test_package_list.oper_elem("add_hrTemplateLangType_select", create_data["hrReportLang"]) |
| | | # 选择报告模板 |
| | | test_package_list.oper_elem("add_reportTemplateId_select", create_data["reportTemplate"]) |
| | | # 点击测试者接收报告 |
| | | test_package_list.oper_elem("add_autoSendReport_checkbox") |
| | | # 选择测试者报告邮箱语言类型 |
| | | test_package_list.oper_elem("add_memberTemplateLangType_select", create_data["memberReportLang"]) |
| | | # 切换到上一层iframe |
| | | test_package_list.switch_parent_iframe() |
| | | # 点击确认按钮 |
| | | test_package_list.oper_elem("add_confirm_btn") |
| | | time.sleep(5) |
| | | # 判断是否成功创建 |
| | | assert test_package_list.is_create_success(test_package_name) |
| | | |
| | | def test_open_url(self): |
| | | @pytest.mark.parametrize('data_read', ["MAQ"], indirect=True) |
| | | def test_open_url(self, data_read: dict): |
| | | """ |
| | | 打开分享链接 |
| | | :return: |
| | |
| | | # 勾选新创建的测试包 |
| | | test_package_list.click_package_checkbox(TestMAQ.test_package_name) |
| | | # 点击生成分享链接按钮 |
| | | test_package_list.click_share_1_btn() |
| | | test_package_list.oper_elem("share_1_btn") |
| | | # 切换到分享窗口的iframe |
| | | test_package_list.oper_elem("share_iframe") |
| | | # 获取到url |
| | | url = test_package_list.get_share_url() |
| | | url = test_package_list.oper_elem("share_url_text") |
| | | # 切换到上一层iframe |
| | | test_package_list.switch_parent_iframe() |
| | | # 点击关闭按钮 |
| | | test_package_list.oper_elem("share_cancel_btn") |
| | | time.sleep(1) |
| | | # 打开新标签页加载url |
| | | test_package_list.open_new_table_to_url(url) |
| | | # 创建分享页面对象 |
| | |
| | | # 填写信息提交并获取测试链接 |
| | | name = random_string(8) |
| | | email = name + "@gmail.com" |
| | | test_url = share_add.page_default_operation(name, email) |
| | | # test_url = "http://161.117.57.194/exam-stu/#/ots/94830ada-8f6c-44c0-8946-79c43267d9c1/login" |
| | | # 填写邮箱和姓名并提交 |
| | | share_add.oper_elem("name_input", name) |
| | | share_add.oper_elem("email_input", email) |
| | | share_add.oper_elem("submit_btn") |
| | | # 获取到测试链接 |
| | | test_url = share_add.oper_elem("test_url_text") |
| | | # 当前页面打开链接 |
| | | driver.get(test_url) |
| | | # 点击提交按钮 |
| | | share_add.submit_btn() |
| | | share_add.oper_elem("submit_btn") |
| | | # 获取数据 |
| | | info = data_read["info"] |
| | | # 填写基本信息并提交 |
| | | share_add.fill_info(email, "职员", "人事部") |
| | | # 点击开始测试 |
| | | share_add.submit_btn() |
| | | share_add.oper_elem("fill_email_input", email) |
| | | share_add.oper_elem("fill_position_input", info["position"]) |
| | | share_add.oper_elem("fill_dept_input", info["dept"]) |
| | | share_add.oper_elem("submit_btn") |
| | | time.sleep(3) |
| | | |
| | | def test_answer(self): |
| | | # 获取driver |
| | | driver = TestMAQ.driver |
| | | # 创建answer对象 |
| | | answer_page = AnswerPage(driver) |
| | | answer_page = MAQAnswerPage(driver) |
| | | # 点击开始测试 |
| | | answer_page.oper_elem("start_btn") |
| | | # 开始答题 |
| | | flag = answer_page.answer_MAQ() |
| | | if flag is None or not flag: |
| | | assert flag |
| | | return |
| | | flag = answer_page.answer() |
| | | # 答完题关闭当前标签页 |
| | | driver.close() |
| | | # 切换到第一个标签页 |
| | | answer_page.switch_window(0) |
| | | if flag is not None or not flag: |
| | | assert flag |
| | | return |
| | | |
| | | def test_delete_package(self): |
| | | # 获取driver |
| | | driver = TestMAQ.driver |
| | | # 创建测试包列表页面的对象 |
| | | test_package_list = TestPackageListPage(driver) |
| | | # 切换到第一个标签页 |
| | | test_package_list.switch_window(0) |
| | | test_package_list.oper_elem("this_iframe") |
| | | # 删除测试包 |
| | | test_package_list.delete_package() |
| | | time.sleep(5) |
| | | test_package_list.oper_elem("delete_btn") |
| | | test_package_list.oper_elem("delete_confirm_btn") |
| | | time.sleep(3) |
| | | # 关闭 |
| | | driver.quit() |
| | | |
| | | |
| | | |
| | | if __name__ == '__main__': |