from datetime import datetime import time from selenium.webdriver.common.by import By import pytest from selenium import webdriver from po.login_page import LoginPage 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 comm.my_random import * class TestSmoking: driver = None test_package_name = "MAQ自动测试包-20230711151825" def test_login(self): """ 打开页面并进行登录测试 :return: """ TestSmoking.driver = webdriver.Chrome() driver = TestSmoking.driver login_page = LoginPage(driver) try: # 打开链接 driver.get("http://161.117.57.194/login?lang=zh_CN") except: # 链接打开出现异常说明链接无法访问,捕获异常但不做处理 pass # 浏览器窗口最大化 driver.maximize_window() # 获取到刷新按钮并每10秒点击一次,知道刷新按钮消失 while True: try: # 判断打开的页面是否存在刷新按钮 reload_btn = login_page.get_element((By.XPATH, "//div[@id='buttons']/div/button[@id='reload-button']")) # 点击刷新按钮 reload_btn.click() time.sleep(10) except: # 出现异常表示不存在刷新按钮,退出循环 break login_page.login("admin", "ots@2021!!", "ots") time.sleep(2) assert login_page.is_login_success() def test_create_package(self): """ 创建测试包 :return: """ # 获取driver driver = TestSmoking.driver # 创建home页面的对象 home_page = HomePage(driver) # 点击左侧菜单进入页面 home_page.menu_select("测试包管理/测试包列表") # 创建测试包列表页面的对象 test_package_list = TestPackageListPage(driver) # 点击创建按钮 test_package_list.create_btn() # 获取当前时间 current_time = datetime.now() # 转换为字符串 time_str = current_time.strftime("%Y%m%d%H%M%S") # 创建测试包填写的参数 # 测试包名称 test_package_name = "MAQ自动测试包-" + time_str # 设置测试包名称为类变量 TestSmoking.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 = "中文" # 填写测试包名称 test_package_list.testPackageName_input(test_package_name) # 填写报告企业名称 test_package_list.reportCompanyName_input(report_company_name) # 选择测试包类型 test_package_list.testPackageType_select(test_package_type) # 选择产品包 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.add_confirm() time.sleep(2) # 判断是否成功创建 assert test_package_list.is_create_success(test_package_name) def test_open_url(self): """ 打开分享链接 :return: """ # 获取driver driver = TestSmoking.driver # 创建home页面的对象 # home_page = HomePage(driver) # 点击左侧菜单进入页面 # home_page.menu_select("测试包管理/测试包列表") # 创建测试包列表页面的对象 test_package_list = TestPackageListPage(driver) # 勾选新创建的测试包 test_package_list.click_package_checkbox(TestSmoking.test_package_name) # 点击生成分享链接按钮 test_package_list.click_share_1_btn() # 获取到url url = test_package_list.get_share_url() # 打开新标签页加载url test_package_list.open_new_table_to_url(url) # 创建分享页面对象 share_add = ShareAddPage(driver) # 填写信息提交并获取测试链接 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" # 当前页面打开链接 driver.get(test_url) # 点击提交按钮 share_add.submit_btn() # 填写基本信息并提交 share_add.fill_info(email, "职员", "人事部") # 点击开始测试 share_add.submit_btn() def test_answer(self): # 获取driver driver = TestSmoking.driver # 创建answer对象 answer_page = AnswerPage(driver) # 开始答题 flag = answer_page.answer_MAQ() if not flag: assert flag return # 答完题关闭当前标签页 driver.close() # 切换到第一个标签页 answer_page.switch_window(0) # 创建测试包列表页面的对象 test_package_list = TestPackageListPage(driver) # 删除测试包 test_package_list.delete_package() time.sleep(5) # 关闭 driver.quit() if __name__ == '__main__': pytest.main(["-s", __file__])