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.maq_answer_page import MAQAnswerPage
|
from comm.my_random import *
|
|
|
class TestMAQ:
|
driver = None
|
test_package_name = None
|
|
@pytest.mark.parametrize('data_read', ["login"], indirect=True)
|
def test_login(self, data_read: dict):
|
"""
|
打开页面并进行登录测试
|
:param data_read: 执行数据读取的函数并获取到返回值
|
:return:
|
"""
|
TestMAQ.driver = webdriver.Chrome()
|
driver = TestMAQ.driver
|
login_page = LoginPage(driver)
|
try:
|
# 打开链接
|
driver.get(data_read["url"])
|
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:
|
# 出现异常表示不存在刷新按钮
|
# 接着判断是否存在nginx error!
|
try:
|
nginx_error = login_page.get_element((By.XPATH, "//strong[text() = 'nginx error!']"))
|
# 存在则睡眠10秒
|
time.sleep(10)
|
except:
|
break
|
|
login_page.login(data_read["username"], data_read["password"], data_read["code"])
|
time.sleep(2)
|
assert login_page.is_login_success()
|
|
@pytest.mark.parametrize('data_read', ["MAQ"], indirect=True)
|
def test_create_package(self, data_read: dict):
|
"""
|
创建测试包
|
:param data_read: 读取数据
|
:return:
|
"""
|
# 获取driver
|
driver = TestMAQ.driver
|
# 创建home页面的对象
|
home_page = HomePage(driver)
|
# 点击左侧菜单进入页面
|
home_page.menu_select(data_read["menu"])
|
# 创建测试包列表页面的对象
|
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
|
# 设置测试包名称为类变量
|
TestMAQ.test_package_name = test_package_name
|
# 获取创建测试包的数据
|
create_data = data_read["add"]
|
# 填写测试包名称
|
test_package_list.testPackageName_input(test_package_name)
|
# 填写报告企业名称
|
test_package_list.reportCompanyName_input(create_data["company"])
|
# 选择测试包类型
|
test_package_list.testPackageType_select(create_data["type"])
|
# 选择产品包
|
test_package_list.prodTree_select(create_data["product"])
|
# 输入hr邮箱
|
test_package_list.hrReportEmail_input(create_data["hrEmail"])
|
# 输入有效期
|
test_package_list.invalidTime_input(create_data["invalid"])
|
# 选择邀请邮件语言类型
|
test_package_list.testTemplateLangType_select(create_data["memberLang"])
|
# 选择HR邮件语言类型
|
test_package_list.hrTemplateLangType_select(create_data["hrReportLang"])
|
# 选择报告模板
|
test_package_list.reportTemplate_select(create_data["reportTemplate"])
|
# 点击测试者接收报告
|
test_package_list.autoSendReport_checkbox()
|
# 选择测试者报告邮箱语言类型
|
test_package_list.memberReportLangType_select(create_data["memberReportLang"])
|
# 点击确认按钮
|
test_package_list.add_confirm()
|
time.sleep(2)
|
# 判断是否成功创建
|
assert test_package_list.is_create_success(test_package_name)
|
time.sleep(5)
|
|
@pytest.mark.parametrize('data_read', ["MAQ"], indirect=True)
|
def test_open_url(self, data_read: dict):
|
"""
|
打开分享链接
|
:return:
|
"""
|
# 获取driver
|
driver = TestMAQ.driver
|
# 创建测试包列表页面的对象
|
test_package_list = TestPackageListPage(driver)
|
# 勾选新创建的测试包
|
test_package_list.click_package_checkbox(TestMAQ.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)
|
# 当前页面打开链接
|
driver.get(test_url)
|
# 点击提交按钮
|
share_add.submit_btn()
|
# 获取数据
|
info = data_read["info"]
|
# 填写基本信息并提交
|
share_add.fill_info(email, info["position"], info["dept"])
|
time.sleep(5)
|
|
def test_answer(self):
|
# 获取driver
|
driver = TestMAQ.driver
|
# 创建answer对象
|
answer_page = MAQAnswerPage(driver)
|
# 点击开始测试
|
answer_page.start_btn()
|
# 开始答题
|
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.delete_package()
|
time.sleep(5)
|
# 关闭
|
driver.quit()
|
|
|
if __name__ == '__main__':
|
pytest.main(["-s", __file__])
|