from base.base_page import BasePage
|
from selenium.webdriver.common.by import By
|
from elements.test_package_list_elements import TestPackageListElements as PackageList
|
import time
|
|
|
class TestPackageListPage(BasePage):
|
"""
|
测试包列表页面
|
"""
|
|
def __init__(self, driver):
|
"""初始化时将iframe切换到当前页面"""
|
super().__init__(driver)
|
try:
|
self.driver.switch_to.default_content()
|
self.switch_iframe(PackageList.this_iframe)
|
except:
|
pass
|
|
def create_btn(self):
|
"""
|
点击创建按钮
|
:return:
|
"""
|
self.click(PackageList.create_btn)
|
# 切换到add窗口的iframe
|
self.switch_iframe(PackageList.add_iframe)
|
|
def delete_package(self):
|
"""
|
删除测试包
|
:return:
|
"""
|
# 点击删除按钮
|
self.click(PackageList.delete_btn)
|
# 点击确认按钮
|
self.click_wait(PackageList.delete_confirm_btn)
|
|
def testPackageName_input(self, testPackageName):
|
"""
|
输入测试包名称
|
:param testPackageName: 测试包名称
|
:return:
|
"""
|
self.send_text(testPackageName, PackageList.add_testPackageName_input)
|
|
def reportCompanyName_input(self, reportCompanyName):
|
"""
|
输入报告企业名称
|
:param reportCompanyName: 报告企业名称
|
:return:
|
"""
|
self.send_text(reportCompanyName, PackageList.add_reportCompanyName_input)
|
|
def testPackageType_select(self, testPackageType):
|
"""
|
选择测试包类型
|
:param testPackageType:
|
:return:
|
"""
|
# 点击下拉框
|
self.click(PackageList.add_testPackageType_select)
|
# 获取所有选项
|
options = self.get_elements(PackageList.add_testPackageType_option)
|
# 判断选项是否与传入的选项相等
|
for opt in options:
|
if opt.text == testPackageType:
|
# 相等则点击该选项
|
opt.click()
|
break
|
|
def prodTree_select(self, prodName):
|
"""
|
选择产品包
|
:param prodName:
|
:return:
|
"""
|
# 点击查询按钮
|
self.click(PackageList.add_prodTree_btn)
|
# 切换到prodTree的iframe
|
self.switch_iframe_wait(PackageList.prodTree_iframe)
|
time.sleep(2)
|
# 获取所有选项
|
options = self.get_elements(PackageList.prodTree_option)
|
# 判断选项是否与传入选项相等
|
for opt in options:
|
if opt.text == prodName:
|
opt.click()
|
break
|
# 切换到上一层的iframe
|
self.switch_parent_iframe()
|
# 点击确认按钮
|
self.click(PackageList.prodTree_confirm_btn)
|
|
def hrReportEmail_input(self, hr_email):
|
"""
|
输入HR接收报告邮箱
|
:param hr_email:
|
:return:
|
"""
|
self.send_text(hr_email, PackageList.add_hrEmail_input)
|
|
def invalidTime_input(self, invalid_time):
|
"""
|
输入有效期
|
:param invalid_time:
|
:return:
|
"""
|
self.send_text(invalid_time, PackageList.add_invalidTime)
|
self.click(PackageList.add_invalidTime)
|
|
def testTemplateLangType_select(self, text):
|
"""
|
选择测试者邀请邮件内容模板
|
:param text: 语言类型,可以选择多个,使用 , 分隔
|
:return:
|
"""
|
# 分割text
|
lang_types = text.split(",")
|
# 点击下拉框
|
self.click(PackageList.add_templateLangType_select)
|
# 获取所有选项
|
options = self.get_elements(PackageList.add_templateLangType_option)
|
# 判断选项是否与传入的选项相等
|
for opt in options:
|
for lang_type in lang_types:
|
if opt.text == lang_type:
|
# 相等则点击该选项
|
opt.click()
|
break
|
|
def hrTemplateLangType_select(self, text):
|
"""
|
选择HR邮件内容模板
|
:param text: 语言类型,可以选择多个,使用 , 分隔
|
:return:
|
"""
|
# 分割text
|
lang_types = text.split(",")
|
# 点击下拉框
|
self.click(PackageList.add_hrTemplateLangType_select)
|
# 获取所有选项
|
options = self.get_elements(PackageList.add_hrTemplateLangType_option)
|
# 判断选项是否与传入的选项相等
|
for opt in options:
|
for lang_type in lang_types:
|
if opt.text == lang_type:
|
# 相等则点击该选项
|
opt.click()
|
break
|
|
def reportTemplate_select(self, text):
|
"""
|
报告模板选择
|
:param text: 模板,可以选择多个,使用 , 分隔
|
:return:
|
"""
|
# 分割text
|
templates = text.split(",")
|
# 点击下拉框
|
self.click(PackageList.add_reportTemplateId_select)
|
# 获取所有选项
|
options = self.get_elements(PackageList.add_reportTemplateId_option)
|
# 判断选项是否与传入的选项相等
|
for opt in options:
|
for template in templates:
|
if opt.text == template:
|
# 相等则点击该选项
|
opt.click()
|
break
|
# 再次点击下拉框
|
self.click(PackageList.add_reportTemplateId_select)
|
|
def autoSendReport_checkbox(self):
|
"""
|
点击测试者接收报告
|
:return:
|
"""
|
self.click(PackageList.add_autoSendReport_checkbox)
|
|
def memberReportLangType_select(self, text):
|
"""
|
测试者报告邮件语言类型
|
:param text: 语言类型,可以选择多个,使用 , 分隔
|
:return:
|
"""
|
# 分割text
|
lang_types = text.split(",")
|
# 点击下拉框
|
self.click(PackageList.add_memberTemplateLangType_select)
|
# 获取所有选项
|
options = self.get_elements(PackageList.add_memberTemplateLangType_option)
|
# 判断选项是否与传入的选项相等
|
for opt in options:
|
for lang_type in lang_types:
|
if opt.text == lang_type:
|
# 相等则点击该选项
|
opt.click()
|
break
|
|
def add_confirm(self):
|
"""
|
点击确认按钮
|
:return:
|
"""
|
# 回到上一层iframe
|
self.switch_parent_iframe()
|
self.click(PackageList.add_confirm_btn)
|
|
def is_create_success(self, packageName):
|
"""
|
判断这个测试包是否创建成功
|
:param packageName: 测试包名称
|
:return: bool
|
"""
|
names = self.get_elements(PackageList.table_packageName_a)
|
for name in names:
|
if name.text == packageName:
|
return True
|
return False
|
|
def click_package_checkbox(self, packageName):
|
"""
|
选中测试包,勾选对应测试包列表的复选框
|
:param packageName: 测试包名称
|
:return:
|
"""
|
# 获取到table的所有tr
|
table_trs = self.get_elements(PackageList.table_package_tr)
|
for tr in table_trs:
|
# 测试包名称在tr中的定位
|
package_name_loc = (By.XPATH, "td[2]/a")
|
# 获取tr中的测试包名称
|
tr_package_name = self.get_element_in(tr, package_name_loc).text
|
if tr_package_name == packageName:
|
# 复选框在tr中的定位
|
package_checkbox_loc = (By.XPATH, "td[1]/input")
|
# 获取复选框元素
|
tr_checkbox = self.get_element_in(tr, package_checkbox_loc)
|
# 点击复选框
|
tr_checkbox.click()
|
break
|
|
def click_share_1_btn(self):
|
"""
|
点击生成分享链接按钮
|
:return:
|
"""
|
self.click(PackageList.share_1_btn)
|
|
def get_share_url(self):
|
"""
|
获取分享链接
|
:return: url
|
"""
|
# 切换到share的iframe中
|
self.switch_iframe(PackageList.share_iframe)
|
# 获取url
|
url = self.get_input_value_js(PackageList.share_url_input)
|
# 退回上一层iframe
|
self.switch_parent_iframe()
|
# 点击关闭按钮
|
self.click(PackageList.share_cancel_btn)
|
return url
|
|
|
def selector(self, click_loc, options_loc, text):
|
"""
|
通用选择器,直接调用选择下拉框选项
|
:param click_loc: 点击后出现下拉选项的元素定位
|
:param options_loc: 选项的元素定位
|
:param text: 判断点击的文本
|
:return:
|
"""
|
# 点击下拉框
|
self.click(click_loc)
|
# 获取所有选项
|
options = self.get_elements(options_loc)
|
# 判断选项是否与传入的选项相等
|
for opt in options:
|
if opt.text == text:
|
# 相等则点击该选项
|
opt.click()
|
break
|