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