阳洁
2023-07-18 5f1ad21111b4344a9e55125720d159dd6b949373
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
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_wait(PackageList.create_btn)
        # 切换到add窗口的iframe
        self.switch_iframe(PackageList.add_iframe)
 
    def delete_package(self):
        """
        删除测试包
        :return:
        """
        # 点击删除按钮
        self.click_wait(PackageList.delete_btn)
        # 点击确认按钮
        self.click_wait(PackageList.delete_confirm_btn)
 
    def testPackageName_input(self, testPackageName):
        """
        输入测试包名称
        :param testPackageName: 测试包名称
        :return:
        """
        self.send_text_wait(testPackageName, PackageList.add_testPackageName_input)
 
    def reportCompanyName_input(self, reportCompanyName):
        """
        输入报告企业名称
        :param reportCompanyName: 报告企业名称
        :return:
        """
        self.send_text_wait(reportCompanyName, PackageList.add_reportCompanyName_input)
 
    def testPackageType_select(self, testPackageType):
        """
        选择测试包类型
        :param testPackageType:
        :return:
        """
        # 点击下拉框
        self.click_wait(PackageList.add_testPackageType_select)
        # 获取所有选项
        options = self.get_elements_wait(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_wait(PackageList.add_prodTree_btn)
        # 切换到prodTree的iframe
        self.switch_iframe_wait(PackageList.prodTree_iframe)
        time.sleep(2)
        # 获取所有选项
        options = self.get_elements_wait(PackageList.prodTree_option)
        # 判断选项是否与传入选项相等
        for opt in options:
            if opt.text == prodName:
                opt.click()
                break
        # 切换到上一层的iframe
        self.switch_parent_iframe()
        # 点击确认按钮
        self.click_wait(PackageList.prodTree_confirm_btn)
 
    def hrReportEmail_input(self, hr_email):
        """
        输入HR接收报告邮箱
        :param hr_email:
        :return:
        """
        self.send_text_wait(hr_email, PackageList.add_hrEmail_input)
 
    def invalidTime_input(self, invalid_time):
        """
        输入有效期
        :param invalid_time:
        :return:
        """
        self.send_text_wait(invalid_time, PackageList.add_invalidTime)
        self.click_wait(PackageList.add_invalidTime)
 
    def testTemplateLangType_select(self, text):
        """
        选择测试者邀请邮件内容模板
        :param text: 语言类型,可以选择多个,使用 , 分隔
        :return:
        """
        # 分割text
        lang_types = text.split(",")
        # 点击下拉框
        self.click_wait(PackageList.add_templateLangType_select)
        # 获取所有选项
        options = self.get_elements_wait(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_wait(PackageList.add_hrTemplateLangType_select)
        # 获取所有选项
        options = self.get_elements_wait(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_wait(PackageList.add_reportTemplateId_select)
        # 获取所有选项
        options = self.get_elements_wait(PackageList.add_reportTemplateId_option)
        # 判断选项是否与传入的选项相等
        for opt in options:
            for template in templates:
                if opt.text == template:
                    # 相等则点击该选项
                    opt.click()
                    break
        # 再次点击下拉框
        self.click_wait(PackageList.add_reportTemplateId_select)
 
    def position_input(self, text):
        """
        输入要评价的岗位
        :param text:
        :return:
        """
        self.send_text_wait(text, PackageList.add_position_input)
 
    def professionalCategory_input(self, text):
        """
        输入职业大类
        :param text:
        :return:
        """
        self.send_text_wait(text, PackageList.add_professionalCategory_input)
 
    def superiorPosition_input(self, text):
        """
        输入上级岗位
        :param text:
        :return:
        """
        self.send_text_wait(text, PackageList.add_superiorPosition_input)
 
    def autoSendReport_checkbox(self):
        """
        点击测试者接收报告
        :return:
        """
        self.click_wait(PackageList.add_autoSendReport_checkbox)
 
    def memberReportLangType_select(self, text):
        """
        测试者报告邮件语言类型
        :param text: 语言类型,可以选择多个,使用 , 分隔
        :return:
        """
        # 分割text
        lang_types = text.split(",")
        # 点击下拉框
        self.click_wait(PackageList.add_memberTemplateLangType_select)
        # 获取所有选项
        options = self.get_elements_wait(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_wait(PackageList.add_confirm_btn)
 
    def is_create_success(self, packageName):
        """
        判断这个测试包是否创建成功
        :param packageName: 测试包名称
        :return: bool
        """
        names = self.get_elements_wait(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_wait(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_wait(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_wait(PackageList.share_cancel_btn)
        time.sleep(1)
        return url
 
    def selector(self, click_loc, options_loc, text):
        """
        通用选择器,直接调用选择下拉框选项
        :param click_loc: 点击后出现下拉选项的元素定位
        :param options_loc: 选项的元素定位
        :param text: 判断点击的文本
        :return:
        """
        # 点击下拉框
        self.click_wait(click_loc)
        # 获取所有选项
        options = self.get_elements_wait(options_loc)
        # 判断选项是否与传入的选项相等
        for opt in options:
            if opt.text == text:
                # 相等则点击该选项
                opt.click()
                break