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
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
|
*** Settings ***
Library yaml
Library OperatingSystem
Library Selenium2Library
Library Collections
Library String
Resource ../../variable/common_variable.txt
Library ../../customlib/common/type_judgment.py
*** Keywords ***
YamlLoad
[Arguments] ${filepath}
[Documentation] 读取yaml文件
... ${filepath}:文件路径
${yaml}= Get File ${filepath}
${loaded}= yaml.Safe Load ${yaml}
[Return] ${loaded}
CreateOrEditPage
[Arguments] ${elementList} ${dataList} ${openCreateOrEditPage} ${okOrCance}
[Documentation] 完整的打开创建或者修改数据页面,并进行操作(创建数据、修改数据)
... ${elementList}:模板的PageData数据,格式:[{id=responsepages_profileName1,value=testname}]
... ${dataList}:数据文件中的数据,格式[[id=responsepages_profileName1,value=testname]]
... ${openCreateOrEditPage}:模板文件中openCreateOrEditPage数据
... ${okOrCance}:模板文件中okOrCancel的数据
#判断是否出现弹出框
${operatingType} Set Variable ${1}
FOR ${data} IN @{dataList}
${operatingType} Get From Dictionary ${data} operatingType
Run keyword if "${operatingType}" == "create" or "${operatingType}" == "edit" or "${operatingType}" == "createGroup" run keywords log 执行用例
... AND OperatPage ${elementList} ${data} ${openCreateOrEditPage}
... AND OkOrCancel ${okOrCance} ${data}
END
${deletePosition} Get From Dictionary ${okOrCance} delete
Run keyword if "${operatingType}" == "create" or "${operatingType}" == "edit" or "${operatingType}" == "createGroup" run keywords log 执行用例
... AND DeleteData ${deletePosition}
OperatPage
[Arguments] ${elementList} ${pData} ${openCreateOrEditPage}=1
[Documentation] 打开创建或者修改数据页面,输入数据
... ${elementList}:模板的PageData数据,格式:[{id=responsepages_profileName1,value=testname}]
... ${pData}:数据文件中的数据,格式[id=responsepages_profileName1,value=testname]
... ${openCreateOrEditPage}:模板文件中openCreateOrEditPage数据
${dataType} Evaluate type(${openCreateOrEditPage})
${openType} Run keyword if "${dataType}" == "<class 'dict'>" Get From Dictionary ${pData} operatingType
Run keyword if "${dataType}" == "<class 'dict'>" run keywords log 打开创建页面
... AND OpenCreateOREdit ${openCreateOrEditPage}[${openType}]
FOR ${element} IN @{elementList}
${type} Get From Dictionary ${element} type
${return} ${elementId} Run Keyword And Ignore Error Get From Dictionary ${element} position
${elementId} Run Keyword If "${return}"=="FAIL" set variable null
... ELSE set variable ${elementId}
${value} Get From Dictionary ${element} value
${return} ${elementValue} Run Keyword And Ignore Error Get From Dictionary ${pData} ${value}
${elementValue} Run Keyword If "${return}"=="FAIL" set variable null
... ELSE set variable ${elementValue}
${return} ${elementData} Run Keyword And Ignore Error Get From Dictionary ${element} data
${elementData} Run Keyword If "${return}"=="FAIL" set variable null
... ELSE set variable ${elementData}
${return} ${default} Run Keyword And Ignore Error Get From Dictionary ${element} default
${default} Run Keyword If "${return}"=="FAIL" or "${default}"=="${EMPTY}" set variable null
... ELSE set variable ${default}
Run Keyword IF "${elementValue}" != "null" run keywords log 执行操作
... AND Operation ${type} ${elementId} ${elementValue} ${elementData} ${default}
END
OpenCreateOREdit
[Arguments] ${menuIdList}
[Documentation] 点击新增或修改按钮
... ${menuIdList}:打开目标界面需要点击的所有按钮,顺序输入
FOR ${menuId} IN @{menuIdList}
sleep ${sleep}
#Wait Until Element Is Enabled id=${menuId} ${sleep_Wait}
click element ${menuId}
END
sleep ${sleep}
Operation
[Arguments] ${type} ${positioning} ${dataValue}=null ${elementData}=null ${default}=null
[Documentation] 根据type进行操作
... ${type}:操作类型
... ${positioning}:操作的元素定位信息
... ${dataValue}:输入、或者上传的数据信息
... ${elementData} : 模板中的PageData中的data数据,当数据为嵌套数据时有该字段
Run Keyword If "${type}" == "input" input text ${positioning} ${dataValue}
... ELSE IF "${type}" == "upload" Choose File ${positioning} ${path}data/scriptfile/${dataValue}
... ELSE IF "${type}" == "combination" run keywords log 嵌套操作
... AND OperatCombinationData ${dataValue} ${elementData} ${positioning}
... ELSE IF "${type}" == "combinationAfter" run keywords log 嵌套操作第二种
... AND OperatCombinationData2 ${dataValue} ${elementData} ${positioning}
... ELSE IF "${type}" == "click" run keywords log 点击按钮
... AND click element ${positioning}
... AND sleep ${sleep}
... ELSE IF "${type}" == "clickTexts" run keywords log 点击多个文本
... AND ClickTexts ${dataValue}
... ELSE IF "${type}" == "clickText" run keywords log 点击单个文本
... AND ClickText ${dataValue}
... ELSE IF "${type}" == "columnSetup" run keywords log 点击列设置中取消列选中
... AND CancelColumnSetup ${dataValue}
... ELSE IF "${type}" == "switch" run keywords log 开关按钮
... AND SwitchButton ${positioning} ${dataValue} ${default}
... ELSE IF "${type}" == "switchCombination" run keywords log 开关按钮,关闭或打开时进行操作
... AND SwitchCombination ${positioning} ${dataValue} ${default} ${elementData}
... ELSE IF "${type}" == "radioButton" run keywords log 单选按钮
... AND RadioButton ${dataValue} ${elementData}
... ELSE IF "${type}" == "search" run keywords log 单条查询点击定位位置
... AND SearchOperation ${positioning} ${dataValue}
... ELSE IF "${type}" == "searchClickText" run keywords log 单条查询点击文本
... AND SearchOperationClickText ${positioning} ${dataValue}
... ELSE IF "${type}" == "searchs" run keywords log 查询多数据后点击文本
... AND SearchOperations ${positioning} ${dataValue}
... ELSE IF "${type}" == "assert" run keywords log 断言
... AND PageAssert ${positioning} ${dataValue}
... ELSE log 无法识别的类型
sleep ${sleep}
OperatCombinationData
[Arguments] ${elementValue} ${templateData} ${positioning}
[Documentation] 多步骤嵌套动作方法,循环取出数据
... ${elementValue}:数据文件中嵌套操作数据
... ${templateData}:模板文件中嵌套数据data数据
FOR ${element} IN @{elementValue}
sleep ${sleep}
click element ${positioning}
sleep ${sleep}
${elementList} create list ${element}
OperatCombination ${elementList} ${templateData}
END
OperatCombinationData2
[Arguments] ${elementValue} ${templateData} ${positioning}
[Documentation] 多步骤嵌套动作方法,循环取出数据。
... ${elementValue}:数据文件中嵌套操作数据
... ${templateData}:模板文件中嵌套数据data数据
${sum} Set Variable ${0}
FOR ${element} IN @{elementValue}
run keyword if "${sum}" != "0" run keywords log 第二次循环开始执行
... AND click element ${positioning}
... AND sleep ${sleep}
${elementList} create list ${element}
OperatCombination ${elementList} ${templateData}
${sum} Evaluate ${sum}+${1}
END
OperatCombination
[Arguments] ${elementValue} ${templateData}
[Documentation] 多步骤嵌套动作方法,递归执行该方法
... ${elementValue}:数据文件中嵌套操作数据
... ${templateData}:模板文件中嵌套数据data数据
${dataValue} Set variable
${dataValueKey} Set variable
FOR ${element} IN @{elementValue}
log ${element}
${dataType} dataType ${element}
${dataValue} Run keyword if "${dataType}" == "<class 'dict'>" get dictionary keys ${element}
log ${dataValue}
${dataValueKey} Run keyword if "${dataType}" == "<class 'dict'>" Set variable ${dataValue}[0]
... ELSE Set Variable ${element}
log ${dataValueKey}
${re} CombinationLate ${templateData} ${dataValueKey}
${type} Get From Dictionary ${re} type
${return} ${elementId} Run Keyword And Ignore Error Get From Dictionary ${re} position
${elementId} Run Keyword If "${return}"=="FAIL" set variable null
... ELSE set variable ${elementId}
${data} Get From Dictionary ${re} data
log ${dataType}
${value} Run keyword if "${dataType}" == "<class 'dict'>" Get From Dictionary ${element} ${dataValueKey}
... ELSE IF "${dataType}" == "<class 'str'>" Set Variable null
... ELSE log 非类型
log ${value}
# ${value} Get From Dictionary ${element} ${dataValueKey}
${return} ${default} Run Keyword And Ignore Error Get From Dictionary ${re} default
${default} Run Keyword If "${return}"=="FAIL" or "${default}"=="${EMPTY}" set variable null
... ELSE set variable ${default}
Run keyword if "${value}" == "None" log 无数据不操作
... ELSE Operation ${type} ${elementId} ${value} ${data} default=${default}
${listType} dataType ${value}
log ${listType}
Run keyword if "${listType}" != "<class 'str'>" and "${type}" != "combination" and "${type}" != "combinationAfter" and "${listType}" != "<class 'NoneType'>" OperatCombination ${value} ${data}
END
CombinationLate
[Arguments] ${elementData} ${dataValue}
[Documentation] 多步骤嵌套动作对比循环取出模板文件的value同数据文件中的值进行对比,并返回对比成功的key值
log ${dataValue}
${re} Set variable
FOR ${i} IN @{elementData}
log ${i}[value]
${re} Run keyword if "${i}[value]" == "${dataValue}" Set variable ${i}
... ELSE Set variable ${re}
END
log ${re}
[Return] ${re}
SwitchButton
[Arguments] ${positioning} ${dataStatus} ${default}
[Documentation] 单选按钮操作
... ${positioning}:单选按钮定位信息
... ${dataStatus}:数据中按钮的状态
... ${default}:模板中按钮的默认状态
Run Keyword If "${dataStatus}" == "${default}" log 状态相同不进行操作
... ELSE click element ${positioning}
SwitchCombination
[Arguments] ${positioning} ${pageData} ${default} ${elementData}
[Documentation] 开关按钮组合操作,关闭或打开时进行下一步操作
... ${positioning}: 开关按钮定位信息
... ${pageData}:数据中按钮的状态
... ${default}:模板中按钮的默认状态
... ${elementData}:模板中的PageData中的data数据,按钮状态改变进行下一步操作
log ${positioning}
log ${pageData}
log ${default}
log ${elementData}
${dataType} dataType ${pageData}
${dataValue} Run keyword if "${dataType}" == "<class 'dict'>" get dictionary keys ${pageData}
log ${dataValue}
${dataValueKey} Set Variable if "${dataType}" == "<class 'dict'>" ${dataValue}[0]
... ${pageData}
${data} Run keyword if "${dataType}" == "<class 'dict'>" Set variable ${pageData}[${dataValueKey}]
Run Keyword If "${dataValueKey}" == "${default}" log 状态相同不进行操作
... ELSE SwitchCombinationOperation ${positioning} ${elementData} ${data}
SwitchCombinationOperation
[Arguments] ${positioning} ${elementData} ${datas}
[Documentation] 根据开关状态进行下一步操作
... ${positioning}:开关按钮定位信息
... ${elementData}:模板中的PageData中的data数据,按钮状态改变进行下一步操作
... ${datas} :数据文件中的操作数据
click element ${positioning}
sleep ${sleep}
FOR ${data} IN @{datas}
${dataKey} get dictionary keys ${data}
log ${dataKey}
${template} CombinationLate ${elementData} ${dataKey}[0]
${type} Get From Dictionary ${template} type
${elementId} Get From Dictionary ${template} position
${templateData} Get From Dictionary ${template} data
${value} Get From Dictionary ${template} value
${dataValue} Get From Dictionary ${data} ${value}
Operation ${type} ${elementId} ${dataValue} ${templateData}
END
RadioButton
[Arguments] ${dataValue} ${elementData}
[Documentation] 单选按钮操作
... ${dataValue}:数据文件中单选按钮的名称
... ${elementData}:模板中所有单选按钮的数据
FOR ${button} IN @{elementData}
${type} Get From Dictionary ${button} type
${position} Get From Dictionary ${button} position
${value} Get From Dictionary ${button} value
Run Keyword If "${dataValue}" == "${value}" run keywords log 点击${value}按钮
... AND Operation ${type} ${position}
END
ClickTexts
[Arguments] ${positioning}
[Documentation] 根据文本定位,点击页面中多个文本
... ${positioning}:文本列表
FOR ${i} IN @{positioning}
click element //span[contains(text(),'${i}')]
sleep ${sleep}
END
ClickText
[Arguments] ${positioning}
[Documentation] 根据文本定位,点击页面中多个文本
... ${positioning}:文本列表
click element //span[contains(text(),'${positioning}')]
sleep ${sleep}
SearchOperation
[Arguments] ${positioning} ${searchData}
[Documentation] 页面查询操作
... ${positioning}:查询输入框定位
... ${searchData}:查询内容
sleep ${sleep}
input text ${positioning}[0] ${searchData}
sleep ${sleep}
press keys ${positioning}[0] ENTER
sleep ${sleep}
click element ${positioning}[1]
sleep ${sleep}
SearchOperationClickText
[Arguments] ${positioning} ${searchData}
[Documentation] 页面查询操作
... ${positioning}:查询输入框定位
... ${searchData}:查询内容
sleep ${sleep}
input text ${positioning} ${searchData}
sleep ${sleep}
press keys ${positioning} ENTER
sleep ${sleep}
click element //span[contains(text(),'${searchData}')]
sleep ${sleep}
SearchOperations
[Arguments] ${positioning} ${searchData}
[Documentation] 页面查询多数据操作
... ${positioning}:查询输入框定位
... ${searchData}:查询内容
sleep ${sleep}
FOR ${i} IN @{searchData}
input text ${positioning}[0] ${i}
sleep ${sleep_min}
press keys ${positioning}[0] ENTER
sleep ${sleep}
click element //span[contains(text(),'${i}')]
sleep ${sleep}
END
PageAssert
[Arguments] ${positioning} ${assertText}
[Documentation] 页面查询多数据操作
... ${positioning}: 断言定位
... ${assertText}: 断言文本
${text} Get Text ${positioning}
Should Be Equal As Strings ${text} ${assertText}
OkOrCancel
[Arguments] ${templateData} ${data}
[Documentation] 提交数据后校验
... ${templateData}: 模板文件中okOrCancel数据,用于点击ok按钮及创建成功校验
... ${data}:数据文件内容
${okBUutton} Get From Dictionary ${templateData} position
${assertPosition} Get From Dictionary ${templateData} ${data}[searchCriteria]
${searchCriteria} Get From Dictionary ${data} searchCriteria
click element ${okBUutton} #点击OK缇交
sleep ${sleep}
SearchData ${data}[${searchCriteria}] ${templateData} ${searchCriteria} #搜索框的关键字
click element ${templateData}[Selected]
${text1} Get Text ${assertPosition} #获取点击后页面文本信息
Should Be Equal As Strings ${text1} ${data}[${searchCriteria}]
SearchData
[Arguments] ${value} ${templateData} ${searchCriteria}
[Documentation]
... ${value}:传入查询的数据
... ${templateData}:模板中okOrCancel得数据
... ${searchCriteria}:搜索条件
${searchType} Get From Dictionary ${templateData} search
Run Keyword If "${searchType}" == "type1" run keywords log 第一种搜索
... AND SearchType1 ${value} ${searchCriteria}
CancelColumnSetup
[Arguments] ${columns}
FOR ${i} IN @{columns}
click element xpath=/html/body/div[1]/div/div[2]/div[2]/div/div/div/div[3]/div[2]/div/div/span[contains(text(),'${i}')]
sleep ${sleep}
END
SearchType1
[Arguments] ${searchvalue} ${searchCriteria}
[Documentation] 本方法搜索查询适用于User
... ${searchvalue}:搜索条件的值
... ${search}:搜索条件
... ${templateData}:模板中okOrCancel得数据
sleep ${sleep}
click element id=one-input #点击搜索框
sleep ${sleep_min}
click element xpath=//*[@id="input_list"]/ul/li/span[contains(text(), "${searchCriteria}")]
input text id=sreach_input ${searchValue}
sleep ${sleep}
click element id=search-input-search #点击搜索按钮
sleep ${sleep}
click element xpath=//*[@id="app"]/div/div[2]/div[2]/div/div/div/div[2]/div[1]/div[2]/div[1]/div/div/div[3]/i
sleep ${sleep}
DeleteData
[Arguments] ${position}
[Documentation] 删除测试数据
... ${position}:删除按钮元素定位
sleep ${sleep}
click element ${position}
sleep ${sleep}
click element xpath=/html/body/div/div/div[3]/button[2]
sleep ${sleep}
CreateOrEditPageNegtive
[Arguments] ${elementList} ${dataList} ${OpenCreateOrEditPage} ${OkOrCance}
[Documentation] 完整的打开创建页面反向用例关键字
... ${elementList}:模板的PageData数据,格式:[{id=responsepages_profileName1,value=testname}]
... ${dataList}:数据文件中的数据,格式[[id=responsepages_profileName1,value=testname]]
... ${OpenCreateOrEditPage}:模板文件中OpenCreateOrEditPage数据
... ${OkOrCance}:模板文件中OkOrCancel的数据
FOR ${data} IN @{dataList}
#打开页面输入数据
OperatPageNegtive ${elementList} ${data} ${OpenCreateOrEditPage}
# 点击OK按钮
OkButton ${OkOrCance}
# 页面断言
AssertPage ${data}[assertText]
END
OperatPageNegtive
[Arguments] ${elementList} ${pData} ${OpenCreateOrEditPage}
[Documentation] 打开创建或者修改数据页面,输入数据
... ${elementList}:模板的PageData数据,格式:[{id=responsepages_profileName1,value=testname}]
... ${pData}:数据文件中的数据,格式[id=responsepages_profileName1,value=testname]
... ${OpenCreateOrEditPage}:模板文件中OpenCreateOrEditPage数据
${openType} Get From Dictionary ${pData} operatingType
OpenCreateOREdit ${OpenCreateOrEditPage}[${openType}]
${dataType} Run keyword if "${openType}" == "create" or "${openType}" == "edit" Set Variable createAndEdit
... ELSE IF "${openType}" == "createGroup" or "${openType}" == "editGroup" Set Variable createAndEditGroup
${elementList} Set Variable ${elementList}[${dataType}]
FOR ${element} IN @{elementList}
${type} Get From Dictionary ${element} type
${return} ${elementId} Run Keyword And Ignore Error Get From Dictionary ${element} position
${elementId} Run Keyword If "${return}"=="FAIL" set variable null
... ELSE set variable ${elementId}
${value} Get From Dictionary ${element} value
${return} ${elementValue} Run Keyword And Ignore Error Get From Dictionary ${pData} ${value}
${elementValue} Run Keyword If "${return}"=="FAIL" set variable null
... ELSE set variable ${elementValue}
${return} ${elementData} Run Keyword And Ignore Error Get From Dictionary ${element} data
${elementData} Run Keyword If "${return}"=="FAIL" set variable null
... ELSE set variable ${elementData}
${return} ${default} Run Keyword And Ignore Error Get From Dictionary ${element} default
${default} Run Keyword If "${return}"=="FAIL" or "${default}"=="${EMPTY}" set variable null
... ELSE set variable ${default}
Run Keyword If "${elementValue}" != "null" run keywords log 进行操作
... AND Operation ${type} ${elementId} ${elementValue} ${elementData} ${default}
END
OkButton
[Arguments] ${OkOrCance}
[Documentation] 点击Ok按钮
... ${OkOrCance}:模板文件中OkOrCancel的数据
${okPosition} Get From Dictionary ${OkOrCance} position
sleep ${sleep}
click element ${okPosition}
sleep ${sleep_min}
AssertPage
[Arguments] ${assertText}
[Documentation] 反向用例断言
... ${assertText}: 断言数据列表形式["assertText1","assertText2"]
FOR ${text} IN @{assertText}
Page Should Contain ${text}
END
TextContain
[Arguments] ${columnList} ${text}
[Documentation] 验证页面不存在文本关键字
FOR ${column} IN @{columnList}
should not be equal ${column} ${text}
END
CreatePageTextAssert
[Arguments] ${elementList} ${dataList} ${OpenCreateOrEditPage}
[Documentation] 用于创建页面内文本断言
... ${elementList}:模板的PageData数据,格式:[{id=responsepages_profileName1,value=testname}]
... ${dataList}:数据文件中的数据,格式[id=responsepages_profileName1,value=testname]
... ${OpenCreateOrEditPage}:模板文件中OpenCreateOrEditPage数据
#打开页面输入数据
OperatPageNegtive ${elementList} ${dataList} ${OpenCreateOrEditPage}
#数据文件中断言列表
${texts} Get From Dictionary ${dataList} AssertText
# 页面文本断言
FOR ${text} IN @{texts}
Page Should Contain ${text}
END
PrioritySelectCaseData
[Arguments] ${objDataList}
#增加优先级筛选执行代码,当operatingtype中最后一位值为9时,只执行该数据参数
${templist} create list
log to console 获取的原始数据------${objDataList}
FOR ${it} IN @{objDataList}
${operatingType0} Get From Dictionary ${it}[0] operatingType
${operatingType} get substring ${operatingType0} -1
${operatingType1} get substring ${operatingType0} 0 -1
Run keyword if "${operatingType}" == "9" run keywords
... set to dictionary ${it}[0] operatingType ${operatingType1}
... AND append to list ${templist} ${it}
... AND log to console ${templist}
END
${templistcount} get length ${templist}
${objDataList} run keyword if ${templistcount}>0 set variable ${templist}
... ELSE set variable ${objDataList}
log to console 优先执行的数据------${objDataList}
[Return] ${objDataList}
#优先级筛选执行结束
OpenPage
[Arguments] ${openCreateOrEditPage}
[Documentation] 打开测试页面
${pagePosition} Get From Dictionary ${openCreateOrEditPage} create
${pagePosition} get substring ${pagePosition} 0 2
FOR ${i} IN @{pagePosition}
click element ${i}
sleep ${sleep}
END
TestPageVerifyOperation
[Arguments] ${openCreateOrEditPage} ${data} ${tempData}
[Documentation] 测试页面操作验证
... ${openCreateOrEditPage}:模板文件中openCreateOrEditPage中数据,打开页面定位信息
#登录后打开测试页面
OpenPage ${openCreateOrEditPage}
OperatPage ${tempData} ${data}
ColumnSetup
[Arguments] ${openCreateOrEditPage} ${data} ${tempData}
[Documentation] 列设置验证关键字
... ${openCreateOrEditPage}:模板文件中openCreateOrEditPage中数据,打开页面定位信息
#登录后打开测试页面
OpenPage ${openCreateOrEditPage}
OperatPage ${tempData} ${data}
# 断言页面不存在列
${columnList} Get From Dictionary ${data} cancel_show
${assertPosition} Get From Dictionary ${data} assertPosition
FOR ${position} IN @{assertPosition}
${text} Get text ${position}
TextContain ${columnList} ${text}
END
TurnPage
[Arguments] ${openCreateOrEditPage} ${okOrCancel}
[Documentation] 翻页功能
OpenPage ${openCreateOrEditPage}
${number} Get Text xpath=//*[@id="app"]/div/div[2]/div[2]/div/div/div/div[2]/div[3]/div/div/span
log ${number}
${number} get substring ${number} 6
log ${number}
Run keyword if ${number} > 20 Run keywords log 执行翻页操作
... AND TurnPageAssert ${okOrCancel}
TurnPageAssert
[Arguments] ${okOrCancel}
[Documentation] 验证翻页功能
${idPosition} Get From Dictionary ${okOrCancel} ID
${id1} Get Text ${idPosition}
click element xpath=//*[@id="app"]/div/div[2]/div[2]/div/div/div/div/div[2]/div[3]/div/div/button[2]
sleep ${sleep}
${id2} Get Text ${idPosition}
click element xpath=//*[@id="app"]/div/div[2]/div[2]/div/div/div/div/div[2]/div[3]/div/div/button[1]
sleep ${sleep}
${id3} Get Text ${idPosition}
click element xpath=//*[@id="app"]/div/div[2]/div[2]/div/div/div[1]/div/div[2]/div[3]/div/div/ul/li[2]
sleep ${sleep}
${id4} Get Text ${idPosition}
Should Not Be Equal ${id1} ${id2}
Should Not Be Equal ${id2} ${id3}
Should Not Be Equal ${id3} ${id4}
UserOperationLog
[Arguments] ${openCreateOrEditPage}
[Documentation] 验证user页面账号日志功能
OpenPage ${openCreateOrEditPage}
SearchType1 ${username} User
click element xpath=//*[@id="userTable"]/div[4]/div[2]/table/tbody/tr/td[11]/div/div/button
sleep ${sleep}
${text} Get Text xpath=//*[@id="roleTable"]/div[3]/table/tbody/tr[1]/td[4]/div/span
Should Be Equal As Strings ${text} ${testClentIP}
|