-
Notifications
You must be signed in to change notification settings - Fork 4
/
alert.js
181 lines (168 loc) · 4.25 KB
/
alert.js
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
/**
* 警告弹窗相关函数
* @author JinXinhua <79202792 at qq.com> 20151024
*/
var alertName;
/** 警告弹窗消息 */
var alertMsg;
/** 警告弹窗数组 */
var alertMsgs = [];
/** 排除关键字列表 */
var alertMsgExKeys = [];
var alertMsgOld;
var alertRet = false;
var ALERT_MSG_KEYS = "alertMsgKeys";
var oAlertRetKeys;
/** alert处理函数 返回假表示让系统处理,会自动点按钮 */
UIATarget.onAlert = function onAlert(alert) {
alertName = alert.name();
var view1 = alert.scrollViews()[0];
alertMsg = view1.staticTexts()[1].name();
alertMsgs = pushToFixArray(alertMsgs, alertMsg, 10);
debugArray(getButtons(alert), "alert.buttons");
logDebug(alertName + " alertMsg=" + alertMsg);
var o1 = getValueFromCache(ALERT_MSG_KEYS);
tapAlertButtonsByMsgKey(o1);
tapAlertButtonsByMsgKey(oAlertRetKeys);
logDebug("alertRet=" + alertRet);
return alertRet;
}
/**
* 警告弹窗是否可见
* @returns {Boolean}
*/
function isAlertVisible() {
var ret = false;
var a = app.alert();
if (isUIAAlert(a)) {
ret = a.isVisible();
}
return ret;
}
function isAlertMsgExKey1(msg1) {
var ret = false;
for ( var i in alertMsgExKeys) {
var key = alertMsgExKeys[i];
if (isIn(msg1, key)) {
ret = true;
break;
}
}
return ret;
}
/**
* 加入到固定长度数组
* @param arr1
* @param v1
* @param fixLength 固定数组长度
* @returns {Array}
*/
function pushToFixArray(arr1, v1, fixLength) {
if (isUndefined(arr1)) {
arr1 = [];
}
var ret;
if (isDefined(v1)) {
if (!isAlertMsgExKey1(v1)) {
arr1.push(v1);
}
if (arr1.length > fixLength) {
var firstIndex = arr1.length - fixLength;
ret = arr1.slice(firstIndex);
} else {
ret = arr1;
}
}
return ret;
}
/**
* 点击警告弹窗按钮
* @param i 下标
*/
function tapAlertButton(i) {
if (isUndefined(i)) {
i = 0;
}
var obj = app.alert().buttons()[i];
if (!isUIAElementNil(obj)) {
tap(obj);
}
}
/**
* 根据消息特征值点击警告弹窗按钮
* @param o1 {"消息特征值":"按钮下标"}
*/
function tapAlertButtonsByMsgKey(o1) {
try {
// tapKeyboardHide();// 防止键盘挡住弹窗按钮
var i = -1;
for ( var key in o1) {
var v1 = o1[key];
if (isIn(alertMsg, key)) {
i++;
tapAlertButton(v1);
if (v1 == "刷新价格") {
delay(1.5);// 刷新时间太长
}
delay(0.5);// 等待弹窗消失,防止再次触发onAlert 161223
alertRet = false;
break;
}
}
} catch (e) {
logError("e=" + e);
}
}
/**
* 运行自定义函数并点击弹窗按钮
* @param f1
* @param alertButtonIndex
*/
function runAndAlert(f1, alertButtonIndex) {
alertRet = true;
try {
eval(f1 + "()");
tapAlertButton(alertButtonIndex);
} catch (e) {
logError("f1=" + f1 + "," + alertButtonIndex + ",e=" + e);
}
alertRet = false;
}
/**
* 保存后再点击确定
*/
function saveAndAlertOk() {
tapButtonAndAlert(SAVE, OK);
}
/**
* 点击功能按钮后再点击警告弹窗按钮
* @param i 功能按钮下标
* @param alertButtonIndex
* @param waitUntilAlertMsgChanged 等待直至警告弹窗消息发生变化
*/
function tapButtonAndAlert(i, alertButtonIndex, waitUntilAlertMsgChanged) {
alertMsgOld = alertMsg;
if (isUndefined(i)) {
i = SAVE;
}
if (isUndefined(alertButtonIndex)) {
alertButtonIndex = OK;
}
logDebug("i=" + i + " alertButtonIndex=" + alertButtonIndex
+ " waitUntilAlertMsgChanged=" + waitUntilAlertMsgChanged);
alertRet = true;
try {
if (i != "none") {
tapButton(window, i, 5);
}
if (waitUntilAlertMsgChanged) {
var cond = "alertMsgOld != alertMsg";
waitUntil(cond, 10);
}
tapAlertButton(alertButtonIndex);
} catch (e) {
logError("tapButtonAndAlertOk,i=" + i + ",alertButtonIndex="
+ alertButtonIndex + ",e=" + e);
}
alertRet = false;
}