panchengyong
10 days ago b2d3f7caf927e5b83ec52efb74f1f818dbb15236
commit | author | age
bc5e1e 1 function AcEventWrapper() {
X 2
3 }
4
5 var acEvent = new AcEventWrapper();
6 /**
7  * 当前Sdk的版本号
8  * <Br/>
9  * 运行环境: 无限制
10  * <Br/>
11  * 兼容版本: Android 4.4 以上
12  *
b2d3f7 13  * @return {string} 例如1.0.1
bc5e1e 14  */
X 15 AcEventWrapper.prototype.version = function () {
16     if (acEventWrapper == null) {
17         return null;
18     }
19     return javaString2string(acEventWrapper.version());
20 };
21
22
23 /**
24  * 将元素节点变成XML
25  * <Br/>
26  * 运行环境: 无障碍模式
27  * <Br/>
28  * 兼容版本: Android 7.0 以上
29  *
b2d3f7 30  * @return {string} 所有节点的xml字符串
bc5e1e 31  */
X 32 AcEventWrapper.prototype.dumpXml = function () {
33     if (acEventWrapper == null) {
34         return null;
35     }
36     return javaString2string(acEventWrapper.dumpXml());
37 };
38
39 /**
40  * 打开通知栏
41  * <Br/>
42  * 运行环境: 无障碍模式
43  * <Br/>
44  * 兼容版本: Android 7.0 以上
45  *
b2d3f7 46  * @return {boolean} true if successful, else return false
bc5e1e 47  */
X 48 AcEventWrapper.prototype.openNotification = function () {
49     if (acEventWrapper == null) {
50         return null;
51     }
52     return acEventWrapper.openNotification();
53 };
54
55 /**
56  * 打开快速设置
57  * <Br/>
58  * 运行环境: 无障碍模式
59  * <Br/>
60  * 兼容版本: Android 7.0 以上
61  *
b2d3f7 62  * @return {boolean} true if successful, else return false
bc5e1e 63  */
X 64 AcEventWrapper.prototype.openQuickSettings = function () {
65     if (acEventWrapper == null) {
66         return null;
67     }
68     return acEventWrapper.openQuickSettings();
69 };
70
71
72 /**
73  * 返回桌面
74  * <Br/>
75  * 运行环境: 无障碍模式
76  * <Br/>
77  * 兼容版本: Android 7.0 以上
78  *
b2d3f7 79  * @return {boolean} true 成功 false 失败
bc5e1e 80  */
X 81 AcEventWrapper.prototype.home = function () {
82     if (acEventWrapper == null) {
83         return null;
84     }
85     return acEventWrapper.home();
86 };
87
88
89 /**
90  * 分割屏幕
91  * <Br/>
92  * 运行环境: 无障碍模式
93  * <Br/>
94  * 兼容版本: Android 7.0 以上
95  *
b2d3f7 96  * @return {boolean} true 成功 false 失败
bc5e1e 97  */
X 98 AcEventWrapper.prototype.splitScreen = function () {
99     if (acEventWrapper == null) {
100         return null;
101     }
102     return acEventWrapper.splitScreen();
103 };
104
105
106 /**
107  * 模拟电源键
108  * <Br/>
109  * 运行环境: 无障碍模式
110  * <Br/>
111  * 兼容版本: Android 7.0 以上
112  *
b2d3f7 113  * @return {boolean} true 成功 false 失败
bc5e1e 114  */
X 115 AcEventWrapper.prototype.power = function () {
116     if (acEventWrapper == null) {
117         return null;
118     }
119     return acEventWrapper.power();
120 };
121 /**
122  * 返回键
123  * <Br/>
124  * 运行环境: 无障碍模式
125  * <Br/>
126  * 兼容版本: Android 7.0 以上
127  *
128  * @return 布尔型 true 成功 false 失败
129  */
130 AcEventWrapper.prototype.back = function () {
131     if (acEventWrapper == null) {
132         return null;
133     }
134     return acEventWrapper.back();
135 };
136
137 /**
138  * 最近使用的APP
139  * <Br/>
140  * 运行环境: 无障碍模式
141  * <Br/>
142  * 兼容版本: Android 7.0 以上
143  *
b2d3f7 144  * @return {boolean} true 成功 false 失败
bc5e1e 145  */
X 146 AcEventWrapper.prototype.recentApps = function () {
147     if (acEventWrapper == null) {
148         return null;
149     }
150     return acEventWrapper.recentApps();
151 };
152
153 /**
154  * 通过选择器获取元素文本
155  * <Br/>
156  * 运行环境: 无障碍模式
157  * <Br/>
158  * 兼容版本: Android 7.0 以上
159  *
160  * @param selectors 选择器的
b2d3f7 161  * @return {null|JSON} 文本字符串
bc5e1e 162  */
X 163 AcEventWrapper.prototype.getText = function (selectors) {
164     if (acEventWrapper == null) {
165         return null;
166     }
167     var ds = acEventWrapper.getText(selectors.toJSONString());
b2d3f7 168     if (ds == null || ds == "") {
bc5e1e 169         return null;
X 170     }
b2d3f7 171     try {
P 172         return JSON.parse(ds);
173     } catch (e) {
174
175     }
176     return null;
bc5e1e 177 };
X 178
179
180 AcEventWrapper.prototype.lockNode = function () {
181     if (acEventWrapper == null) {
182         return null;
183     }
184     acEventWrapper.lockNode();
185 };
186 AcEventWrapper.prototype.releaseNode = function () {
187     if (acEventWrapper == null) {
188         return null;
189     }
190     acEventWrapper.releaseNode();
191 };
192
193 /**
194  * 设置无障碍模式下各种手势模式事件的操作类型,默认是异步
195  * @param mode 1 代表异步,2代表同步
b2d3f7 196  * @param {boolean} true代表成功 false代表失败
bc5e1e 197  */
X 198 AcEventWrapper.prototype.setAccActionMode = function (mode) {
199     if (acEventWrapper == null) {
200         return null;
201     }
202     return acEventWrapper.setAccActionMode(mode);
203 }
204
205
206 /**
207  * 通过选择器 获取节点信息
208  * <Br/>
209  * 运行环境: 无障碍模式
210  * <Br/>
211  * 兼容版本: Android 7.0 以上
212  *
213  * @param selectors 选择器
b2d3f7 214  * @return {null|NodeInfo[]}
bc5e1e 215  */
X 216 AcEventWrapper.prototype.getNodeInfo = function (selectors, timeout) {
217     if (acEventWrapper == null) {
218         return null;
219     }
220     var d = acEventWrapper.getNodeInfo(selectors.toJSONString(), timeout);
221     return nodeInfoArray(d);
222 };
223
b2d3f7 224 /**
P 225  *
226  * @param nid
227  * @param selectors
228  * @param timeout
229  * @return {null|NodeInfo[]}
230  */
bc5e1e 231 AcEventWrapper.prototype.getNodeInfoForNode = function (nid, selectors, timeout) {
X 232     if (acEventWrapper == null) {
233         return null;
234     }
235     var d = acEventWrapper.getNodeInfoForNode(nid, selectors.toJSONString(), timeout);
236     return nodeInfoArray(d);
237 };
238
239 /**
240  * 长点击选择器选中的元素
241  * <Br/>
242  * 运行环境: 无障碍模式
243  * <Br/>
244  * 兼容版本: Android 7.0 以上
245  *
246  * @param selectors 选择器 {@link S}
b2d3f7 247  * @return {boolean} true 成功 false 失败
bc5e1e 248  */
X 249 AcEventWrapper.prototype.longClick = function (selectors) {
250     if (acEventWrapper == null) {
251         return null;
252     }
253     return acEventWrapper.longClick(selectors.toJSONString());
254 };
255
256
257 /**
258  * <p>执行从一个坐标到另一个坐标的拖动</p>
259  * </p>
260  * <Br/>
261  * 运行环境: 无障碍模式
262  * <Br/>
263  * 兼容版本: Android 7.0 以上
264  *
265  * @param startX 起始坐标的X轴值
266  * @param startY 起始坐标的Y轴值
267  * @param endX   结束坐标的X轴值
268  * @param endY   结束坐标的Y轴值
269  * @param duration 持续时长 单位毫秒
b2d3f7 270  * @return {boolean} true 拖动成功, false 拖动失败
bc5e1e 271  */
X 272 AcEventWrapper.prototype.drag = function (startX, startY, endX, endY, duration) {
273     if (acEventWrapper == null) {
274         return null;
275     }
276     return acEventWrapper.drag(startX, startY, endX, endY, duration);
277 };
278
279 /**
280  * 通过选择器拖动某个元素到目标元素
281  * <Br/>
282  * 运行环境: 无障碍模式
283  * <Br/>
284  * 兼容版本: Android 7.0 以上
285  *
286  * @param selectors 选择器 {@link S}
287  * @param destObj   目标元素选择器
288  * @param duration 持续时长 单位毫秒
b2d3f7 289  * @return {boolean} true 成功 false 失败
bc5e1e 290  */
X 291 AcEventWrapper.prototype.dragTo = function (selectors, destObj, duration) {
292     if (acEventWrapper == null) {
293         return null;
294     }
295     return acEventWrapper.dragTo(selectors.toJSONString(), destObj.toJSONString(), duration);
296 };
297 /**
298  * 通过选择器拖动某个元素到目标X Y 坐标
299  * <Br/>
300  * 运行环境: 无障碍模式
301  * <Br/>
302  * 兼容版本: Android 7.0 以上
303  *
304  * @param selectors 原始元素选择器
305  * @param endX      目标 X 坐标
306  * @param endY      目标 Y 坐标
307  * @param duration 持续时长 单位毫秒
b2d3f7 308  * @return {boolean} true 成功 false 失败
bc5e1e 309  */
X 310 AcEventWrapper.prototype.dragToPoint = function (selectors, endX, endY, duration) {
311     if (acEventWrapper == null) {
312         return null;
313     }
314     return acEventWrapper.dragToPoint(selectors.toJSONString(), endX, endY, duration);
315 };
316
317 /**
318  * 点击某个坐标
319  * <Br/>
320  * 运行环境: 无障碍模式
321  * <Br/>
322  * 兼容版本: Android 7.0 以上
323  *
324  * @param x X坐标
325  * @param y Y坐标
b2d3f7 326  * @return  {boolean} true 成功,false 失败
bc5e1e 327  */
X 328 AcEventWrapper.prototype.clickPoint = function (x, y) {
329     if (acEventWrapper == null) {
330         return null;
331     }
332     return acEventWrapper.clickPoint(x, y);
333 };
334
335 /**
336  * 双击某个坐标
337  * <Br/>
338  * 运行环境: 无障碍模式
339  * <Br/>
340  * 兼容版本: Android 7.0 以上
341  *
342  * @param x X坐标
343  * @param y Y坐标
b2d3f7 344  * @return  {boolean} true 成功,false 失败
bc5e1e 345  */
X 346 AcEventWrapper.prototype.doubleClickPoint = function (x, y) {
347     if (acEventWrapper == null) {
348         return null;
349     }
350     return acEventWrapper.doubleClickPoint(x, y);
351 };
352 /**
353  * 点击某个区域中心坐标点
354  * <Br/>
355  * 运行环境: 无障碍模式
356  * <Br/>
357  * 兼容版本: Android 7.0 以上
358  *
359  * @param rect 区域
b2d3f7 360  * @return  {boolean} true 成功,false 失败
bc5e1e 361  */
X 362 AcEventWrapper.prototype.clickCenter = function (rect) {
363     if (acEventWrapper == null) {
364         return null;
365     }
366     if (typeof rect == "string") {
367
368     } else {
369         rect = rect.toJSONString();
370     }
371     return acEventWrapper.clickCenter(rect);
372 };
373
374
375 /**
376  * 长按点击某个坐标
377  * <Br/>
378  * 运行环境: 无障碍模式
379  * <Br/>
380  * 兼容版本: Android 7.0 以上
381  *
382  * @param x X坐标
383  * @param y Y坐标
b2d3f7 384  * @return {boolean}  true 代表成功,false 代表失败
bc5e1e 385  */
X 386 AcEventWrapper.prototype.longClickPoint = function (x, y) {
387     if (acEventWrapper == null) {
388         return null;
389     }
390     return acEventWrapper.longClickPoint(x, y);
391 };
392
393 /**
394  * 通过选择器点击元素
395  * <Br/>
396  * 运行环境: 无障碍模式
397  * <Br/>
398  * 兼容版本: Android 7.0 以上
399  *
400  * @param selectors {@link S}数组
b2d3f7 401  * @return {boolean} true 代表点击成功 false代表点击失败
bc5e1e 402  */
X 403 AcEventWrapper.prototype.click = function (selectors) {
404     if (acEventWrapper == null) {
405         return null;
406     }
407     return acEventWrapper.click(selectors.toJSONString());
408 };
409 AcEventWrapper.prototype.clickEx = function (selectors) {
410     if (acEventWrapper == null) {
411         return null;
412     }
413     return acEventWrapper.clickEx(selectors.toJSONString());
414 };
b2d3f7 415
P 416 /**
417  *
418  * @param selectors
419  * @return {boolean}
420  */
421 AcEventWrapper.prototype.setFocus = function (selectors) {
422     if (acEventWrapper == null) {
423         return null;
424     }
425     return acEventWrapper.setFocus(selectors.toJSONString());
426 };
427 /**
428  *
429  * @param uniqueId
430  * @return {boolean}
431  */
432 AcEventWrapper.prototype.setFocusNodeInfo = function (uniqueId) {
433     if (agentEventWrapper == null) {
434         return null;
435     }
436     return acEventWrapper.setFocusNodeInfo(uniqueId);
437 };
438 /**
439  *
440  * @param selectors
441  * @return {boolean}
442  */
bc5e1e 443 AcEventWrapper.prototype.longClickEx = function (selectors) {
X 444     if (acEventWrapper == null) {
445         return null;
446     }
447     return acEventWrapper.longClickEx(selectors.toJSONString());
448 };
449
b2d3f7 450 /**
P 451  *
452  * @param uniqueId
453  * @return {boolean}
454  */
bc5e1e 455 AcEventWrapper.prototype.clickExNodeInfo = function (uniqueId) {
X 456     if (agentEventWrapper == null) {
457         return null;
458     }
459     return acEventWrapper.clickExNodeInfo(uniqueId);
460 };
461
b2d3f7 462 /**
P 463  *
464  * @param uniqueId
465  * @return {boolean}
466  */
bc5e1e 467 AcEventWrapper.prototype.longClickExNodeInfo = function (uniqueId) {
X 468     if (acEventWrapper == null) {
469         return null;
470     }
471     return acEventWrapper.longClickExNodeInfo(uniqueId);
472 };
473
474 /**
475  * 是否滚动到底部了,如果查不到元素也会返回false
476  * 运行环境: 无障碍模式
477  * <Br/>
478  * 兼容版本: Android 7.0 以上
479  * @param direction 滚动方向 UP,DOWN,LEFT,RIGHT
480  * @param selectors 选择器
b2d3f7 481  * @return {boolean} 代表未滚动到位,true 代表滚动完成了
bc5e1e 482  */
X 483 AcEventWrapper.prototype.isScrollEnd = function (direction, selectors) {
484     if (acEventWrapper == null) {
485         return null;
486     }
487     return acEventWrapper.isScrollEnd(direction, selectors.toJSONString());
488 };
489
490 /**
491  * 通过选择器随机点击元素,有可能选中的是多个元素节点
492  * <Br/>
493  * 运行环境: 无障碍模式
494  * <Br/>
495  * 兼容版本: Android 7.0 以上
496  *
497  * @param selectors {@link S}数组
b2d3f7 498  * @return {boolean} true 代表点击成功 false代表点击失败
bc5e1e 499  */
X 500 AcEventWrapper.prototype.clickRandom = function (selectors) {
501     if (acEventWrapper == null) {
502         return null;
503     }
504     return acEventWrapper.clickRandom(selectors.toJSONString());
505 };
b2d3f7 506 /**
P 507  *
508  * @param selectors
509  * @return {boolean}
510  */
bc5e1e 511 AcEventWrapper.prototype.clickRandomEx = function (selectors) {
X 512     if (acEventWrapper == null) {
513         return null;
514     }
515     return acEventWrapper.clickRandomEx(selectors.toJSONString());
516 };
517 /**
518  * 随机点击区域中的坐标
519  * <Br/>
520  * 运行环境: 无障碍模式
521  * <Br/>
522  * 兼容版本: Android 7.0 以上
523  *
524  * @param rect 区域 {@link Rect}
b2d3f7 525  * @return {boolean} 成功或者失败
bc5e1e 526  */
X 527 AcEventWrapper.prototype.clickRandomRect = function (rect) {
528     if (acEventWrapper == null) {
529         return;
530     }
531     if (rect == null) {
532         return false;
533     }
534     if (typeof rect == "string") {
535
536     } else {
537         rect = rect.toJSONString();
538     }
539     return acEventWrapper.clickRandomRect(rect);
540 };
541 /**
542  * 随机长点击区域中的坐标
543  * <Br/>
544  * 运行环境: 无障碍模式
545  * <Br/>
546  * 兼容版本: Android 7.0 以上
547  *
548  * @param rect 区域 {@link Rect}
b2d3f7 549  * @return {boolean} 成功或者失败
bc5e1e 550  */
X 551 AcEventWrapper.prototype.longClickRandomRect = function (rect) {
552     if (acEventWrapper == null) {
553         return;
554     }
555     if (rect == null) {
556         return false;
557     }
558     if (typeof rect == "string") {
559
560     } else {
561         rect = rect.toJSONString();
562     }
563     return acEventWrapper.longClickRandomRect(rect);
564 };
565
566
567 /**
568  * 通过选择器输入数据
569  * <Br/>
570  * 运行环境: 无障碍模式
571  * <Br/>
572  * 兼容版本: Android 7.0 以上
573  *
574  * @param selectors 选择器
575  * @param content 数据字符串
b2d3f7 576  * @return {boolean} true 代表成功 false代表失败
bc5e1e 577  */
X 578 AcEventWrapper.prototype.inputText = function (selectors, content) {
579     if (acEventWrapper == null) {
580         return null;
581     }
582     return acEventWrapper.inputText(selectors.toJSONString(), content);
583 };
584 /**
585  * 通过选择器粘贴数据
586  * <Br/>
587  * 运行环境: 无障碍模式
588  * <Br/>
589  * 兼容版本: Android 7.0 以上
590  *
591  * @param selectors 选择器
592  * @param content 数据字符串
b2d3f7 593  * @return {boolean} true 代表成功 false代表失败
bc5e1e 594  */
X 595 AcEventWrapper.prototype.pasteText = function (selectors, content) {
596     if (acEventWrapper == null) {
597         return null;
598     }
599     utils.setClipboardText(content);
600     return acEventWrapper.pasteText(selectors.toJSONString(), content);
601 };
602
603
604 /**
605  * 当前是否是我们的输入法
606  *
b2d3f7 607  * @return {boolean} true代表是,false代表不是
bc5e1e 608  */
X 609 AcEventWrapper.prototype.currentIsOurIme = function () {
610     if (acEventWrapper == null) {
611         return null;
612     }
613     return acEventWrapper.currentIsOurIme();
614 };
615
616
617 /**
618  * 使用输入法输入内容,前提是已经设置本程序的输入法为默认输入法
619  * <Br/>
620  * 运行环境: 无障碍模式
621  * <Br/>
622  * 兼容版本: Android 7.0 以上
623  *
624  * @param content   数据字符串
625  * @param selectors {@link S}
b2d3f7 626  * @return {boolean} true 代表成功 false代表失败
bc5e1e 627  */
X 628 AcEventWrapper.prototype.imeInputText = function (selectors, content) {
629     if (acEventWrapper == null) {
630         return null;
631     }
632     if (selectors == null) {
633         return acEventWrapper.imeInputText(null, content);
634     }
635     return acEventWrapper.imeInputText(selectors.toJSONString(), content);
636 };
637
b2d3f7 638 /**
P 639  *
640  * @return {boolean}
641  */
bc5e1e 642 AcEventWrapper.prototype.imeInputViewShown = function () {
X 643     if (acEventWrapper == null) {
644         return null;
645     }
646     return acEventWrapper.imeInputViewShown();
647 };
648
b2d3f7 649 /**
P 650  *
651  * @param selectors
652  * @param content
653  * @return {boolean}
654  */
bc5e1e 655 AcEventWrapper.prototype.imeInputKeyCode = function (selectors, content) {
X 656     if (acEventWrapper == null) {
657         return null;
658     }
659     if (selectors == null) {
660         return acEventWrapper.imeInputKeyCode(null, content);
661     }
662     return acEventWrapper.imeInputKeyCode(selectors.toJSONString(), content);
663 };
664
665
666 /**
667  * 通过选择器判断元素是否存在
668  * <Br/>
669  * 运行环境: 无障碍模式
670  * <Br/>
671  * 兼容版本: Android 7.0 以上
672  *
673  * @param selectors {@link S}
b2d3f7 674  * @return {boolean} true 代表成功 false代表失败
bc5e1e 675  */
X 676 AcEventWrapper.prototype.has = function (selectors) {
677     if (acEventWrapper == null) {
678         return null;
679     }
680     return acEventWrapper.has(selectors.toJSONString());
681 };
682
683 /**
684  * 从一个坐标滑动到另一个坐标
685  * <Br/>
686  * 运行环境: 无障碍模式
687  * <Br/>
688  * 兼容版本: Android 7.0 以上
689  *
690  * @param startX 起始坐标的X轴值
691  * @param startY 起始坐标的Y轴值
692  * @param endX   结束坐标的X轴值
693  * @param endY   结束坐标的Y轴值
694  * @param duration 持续时长 单位毫秒
b2d3f7 695  * @return {boolean} true 滑动成功, false 滑动失败
bc5e1e 696  */
X 697 AcEventWrapper.prototype.swipeToPoint = function (startX, startY, endX, endY, duration) {
698     if (acEventWrapper == null) {
699         return null;
700     }
701     return acEventWrapper.swipeToPoint(startX, startY, endX, endY, duration);
702 };
703
704 /**
705  * 通过选择器从上往下滑动
706  * <Br/>
707  * 运行环境: 无障碍模式
708  * <Br/>
709  * 兼容版本: Android 7.0 以上
710  *
711  * @param selectors 节点选择器
712  * @param distance  滑动距离 单位是像素
713  * @param duration 持续时长 单位毫秒
b2d3f7 714  * @return {boolean} true 代表成功 false 代表失败
bc5e1e 715  */
X 716 AcEventWrapper.prototype.swipeFromUpToDown = function (selectors, distance, duration) {
717     if (acEventWrapper == null) {
718         return null;
719     }
720     return acEventWrapper.swipeFromUpToDown(selectors.toJSONString(), distance, duration);
721 };
722
723 /**
724  * 通过选择器从下往上滑动
725  * <Br/>
726  * 运行环境: 无障碍模式
727  * <Br/>
728  * 兼容版本: Android 7.0 以上
729  *
730  * @param selectors 节点选择器
731  * @param distance  滑动距离 单位是像素
732  * @param duration 持续时长 单位毫秒
b2d3f7 733  * @return {boolean} true 代表成功 false 代表失败
bc5e1e 734  */
X 735 AcEventWrapper.prototype.swipeFromDownToUp = function (selectors, distance, duration) {
736     if (acEventWrapper == null) {
737         return null;
738     }
739     return acEventWrapper.swipeFromDownToUp(selectors.toJSONString(), distance, duration);
740 };
741
742 /**
743  * 通过选择器从右往左滑动
744  * <Br/>
745  * 运行环境: 无障碍模式
746  * <Br/>
747  * 兼容版本: Android 7.0 以上
748  *
749  * @param selectors 节点选择器
750  * @param distance  滑动距离 单位是像素
751  * @param duration 持续时长 单位毫秒
b2d3f7 752  * @return {boolean} true 代表成功 false 代表失败
bc5e1e 753  */
X 754 AcEventWrapper.prototype.swipeFromRightToLeft = function (selectors, distance, duration) {
755     if (acEventWrapper == null) {
756         return null;
757     }
758     return acEventWrapper.swipeFromRightToLeft(selectors.toJSONString(), distance, duration);
759 };
760
761 /**
762  * 通过选择器从左往右滑动
763  * <Br/>
764  * 运行环境: 无障碍模式
765  * <Br/>
766  * 兼容版本: Android 7.0 以上
767  *
768  * @param selectors 节点选择器
769  * @param distance  滑动距离 单位是像素
770  * @param duration 持续时长 单位毫秒
b2d3f7 771  * @return {boolean} true 代表成功 false 代表失败
bc5e1e 772  */
X 773 AcEventWrapper.prototype.swipeFromLeftToRight = function (selectors, distance, duration) {
774     if (acEventWrapper == null) {
775         return null;
776     }
777     return acEventWrapper.swipeFromLeftToRight(selectors.toJSONString(), distance, duration);
778 };
779
780
781 /**
782  * 通过选择器滑动到某个坐标
783  * <Br/>
784  * 运行环境: 无障碍模式
785  * <Br/>
786  * 兼容版本: Android 7.0 以上
787  *
788  * @param selectors 节点选择器
789  * @param endX      结束的X坐标
790  * @param endY      结束的Y坐标
791  * @param duration 持续时长 单位毫秒
b2d3f7 792  * @return {boolean} true 代表成功 false 代表失败
bc5e1e 793  */
X 794 AcEventWrapper.prototype.swipe = function (selectors, endX, endY, duration) {
795     if (acEventWrapper == null) {
796         return null;
797     }
798     return acEventWrapper.swipe(selectors.toJSONString(), endX, endY, duration);
799 };
800
801
802 /**
803  * 通过选择器清除文本数据
804  * <Br/>
805  * 运行环境: 无障碍模式
806  * <Br/>
807  * 兼容版本: Android 7.0 以上
808  *
809  * @param selectors 节点选择器
b2d3f7 810  * @return {boolean}
bc5e1e 811  */
X 812 AcEventWrapper.prototype.clearTextField = function (selectors) {
813     if (acEventWrapper == null) {
814         return false;
815     }
816     return acEventWrapper.clearTextField(selectors.toJSONString());
817 };
818
819 /**
820  * 向上滑动
821  * <Br/>
822  * 运行环境: 无障碍模式
823  * <Br/>
824  * 兼容版本: Android 7.0 以上
825  *
826  * @param distance 滑动距离 单位像素
827  * @param duration 持续时长 单位毫秒
b2d3f7 828  * @return {boolean} true 代表成功 false 代表失败
bc5e1e 829  */
X 830 AcEventWrapper.prototype.swipeFromDownToUpInScreen = function (distance, duration) {
831     if (acEventWrapper == null) {
832         return null;
833     }
834     return acEventWrapper.swipeFromDownToUpInScreen(distance, duration);
835 };
836 /**
837  * 向下滑动
838  * <Br/>
839  * 运行环境: 无障碍模式
840  * <Br/>
841  * 兼容版本: Android 7.0 以上
842  *
843  * @param distance 滑动距离 单位像素
844  * @param duration 持续时长 单位毫秒
b2d3f7 845  * @return {boolean} true 代表成功 false 代表失败
bc5e1e 846  */
X 847 AcEventWrapper.prototype.swipeFromUpToDownInScreen = function (distance, duration) {
848     if (acEventWrapper == null) {
849         return null;
850     }
851     return acEventWrapper.swipeFromUpToDownInScreen(distance, duration);
852 };
853 /**
854  * 向左滑动
855  * <Br/>
856  * 运行环境: 无障碍模式
857  * <Br/>
858  * 兼容版本: Android 7.0 以上
859  *
860  * @param distance 滑动距离 单位像素
861  * @param duration 持续时长 单位毫秒
b2d3f7 862  * @return {boolean} true 代表成功 false 代表失败
bc5e1e 863  */
X 864 AcEventWrapper.prototype.swipeFromRightToLeftInScreen = function (distance, duration) {
865     if (acEventWrapper == null) {
866         return null;
867     }
868     return acEventWrapper.swipeFromRightToLeftInScreen(distance, duration);
869 };
870
871
872 /**
873  * 向右滑动
874  * <Br/>
875  * 运行环境: 无障碍模式
876  * <Br/>
877  * 兼容版本: Android 7.0 以上
878  *
879  * @param distance 滑动距离 单位像素
880  * @param duration 持续时长 单位毫秒
b2d3f7 881  * @return {boolean} true 代表成功 false 代表失败
bc5e1e 882  */
X 883 AcEventWrapper.prototype.swipeFromLeftToRightInScreen = function (distance, duration) {
884     if (acEventWrapper == null) {
885         return null;
886     }
887     return acEventWrapper.swipeFromLeftToRightInScreen(distance, duration);
888 };
889
890
891 /**
892  * 取得当前运行的Activity类名
893  * <Br/>
894  * 运行环境: 无障碍模式
895  * <Br/>
896  * 兼容版本: Android 7.0 以上
897  *
b2d3f7 898  * @return {string} 类名字符串
bc5e1e 899  */
X 900 AcEventWrapper.prototype.getRunningActivity = function () {
901     if (acEventWrapper == null) {
902         return null;
903     }
904     return javaString2string(acEventWrapper.getRunningActivity());
905 };
906 /**
907  * 取得当前运行的App包名
908  * <Br/>
909  * 运行环境: 无障碍模式
910  * <Br/>
911  * 兼容版本: Android 7.0 以上
912  *
b2d3f7 913  * @return {string} 包名字符串
bc5e1e 914  */
X 915 AcEventWrapper.prototype.getRunningPkg = function () {
916     if (acEventWrapper == null) {
917         return null;
918     }
919     return javaString2string(acEventWrapper.getRunningPkg());
920 };
b2d3f7 921 /**
P 922  *
923  * @return {string}
924  */
bc5e1e 925 AcEventWrapper.prototype.getCurrentRunningPkg = function () {
X 926     if (acEventWrapper == null) {
927         return null;
928     }
929     return javaString2string(acEventWrapper.getCurrentRunningPkg());
930 };
931
932
933 /**
934  * 将通知发射处理,相当于点击了通知栏
935  * <Br/>
936  * 运行环境: 无障碍模式
937  * <Br/>
938  * 兼容版本: Android 7.0 以上
939  *
940  * @param seqId 通知栏的对象ID
b2d3f7 941  * @return {boolean} true 代表发射通知成功
bc5e1e 942  */
X 943 AcEventWrapper.prototype.shotNotification = function (seqId) {
944     if (acEventWrapper == null) {
945         return null;
946     }
947     return acEventWrapper.shotNotification(seqId);
948 };
949
950
951 /**
952  * 通知取消处理
953  * <Br/>
954  * 运行环境: 无障碍模式
955  * <Br/>
956  * 兼容版本: Android 7.0 以上
957  *
958  * @param seqId 通知栏的对象ID
b2d3f7 959  * @return {boolean} true 代表取消通知成功
bc5e1e 960  */
X 961 AcEventWrapper.prototype.cancelNotification = function (seqId) {
962     if (acEventWrapper == null) {
963         return null;
964     }
965     return acEventWrapper.cancelNotification(seqId);
966 };
967 AcEventWrapper.prototype.ignoreNotification = function (seqId) {
968     if (acEventWrapper == null) {
969         return null;
970     }
971     return acEventWrapper.ignoreNotification(seqId);
972 };
973
974 /**
975  * 从缓存中清除所有的Toast消息数据
976  * <Br/>
977  * 运行环境: 无障碍模式
978  * <Br/>
979  * 兼容版本: Android 7.0 以上
980  */
981 AcEventWrapper.prototype.clearAllToast = function () {
982     if (acEventWrapper == null) {
983         return null;
984     }
985     acEventWrapper.clearAllToast();
986 };
987 /**
988  * 从缓存中清除所有的通知栏消息数据
989  * <Br/>
990  * 运行环境: 无障碍模式
991  * <Br/>
992  * 兼容版本: Android 7.0 以上
993  */
994 AcEventWrapper.prototype.clearAllNotification = function () {
995     if (acEventWrapper == null) {
996         return null;
997     }
998     acEventWrapper.clearAllNotification();
999 };
1000
1001
1002 /**
1003  * 从通知栏取得多个消息
1004  * <Br/>
1005  * 运行环境: 无障碍模式
1006  * <Br/>
1007  * 兼容版本: Android 7.0 以上
1008  *
1009  * @param pkg 包名
1010  * @param size 需要取得多少个消息
b2d3f7 1011  * @return {null|NotificationInfo[]} 代表没有, 返回的是一个数组
bc5e1e 1012  */
X 1013 AcEventWrapper.prototype.getLastNotification = function (pkg, size) {
1014     if (acEventWrapper == null) {
1015         return;
1016     }
1017     var d = acEventWrapper.getLastNotification(pkg, size);
b2d3f7 1018     if (d == null || d == "") {
bc5e1e 1019         return null;
X 1020     }
1021     d = JSON.parse(d);
1022     var x = [];
1023     for (var i = 0; i < d.length; i++) {
1024         x.push(new NotificationInfo(d[i]));
1025     }
1026     return x;
1027 };
1028
1029
1030 /**
1031  * 从Toast取得多个消息
1032  * 运行环境: 无障碍模式
1033  * <Br/>
1034  * 兼容版本: Android 7.0 以上
1035  *
1036  * @param pkg 包名
1037  * @param size 需要取得多少个消息
b2d3f7 1038  * @return {null|ToastInfo[]} 代表没有
bc5e1e 1039  */
X 1040 AcEventWrapper.prototype.getLastToast = function (pkg, size) {
1041     if (acEventWrapper == null) {
1042         return;
1043     }
1044     var d = acEventWrapper.getLastToast(pkg, size);
b2d3f7 1045     if (d == null || d == "") {
bc5e1e 1046         return null;
X 1047     }
1048     d = JSON.parse(d);
1049     var x = [];
1050     for (var i = 0; i < d.length; i++) {
1051         x.push(new ToastInfo(d[i]));
1052     }
1053     return x;
1054 };
1055
1056
1057 /**
1058  * 请求监听状态栏的权限
1059  * <Br/>
1060  * 运行环境: 无限制
1061  * <Br/>
1062  * 兼容版本: Android 4.4 以上
1063  * @param timeout 请求权限超时时间 单位是秒
b2d3f7 1064  * @return {boolean} true 代表请求权限成功,false代表失败
P 1065  *
bc5e1e 1066  */
X 1067 AcEventWrapper.prototype.requestNotificationPermission = function (timeout) {
1068     if (acEventWrapper == null) {
1069         return null;
1070     }
1071     return acEventWrapper.requestNotificationPermission(timeout);
1072 };
1073
1074
1075 /**
1076  * 检查是否含有状态栏监听权限
1077  * <Br/>
1078  * 运行环境: 无限制
1079  * <Br/>
1080  * 兼容版本: Android 5.0 以上
b2d3f7 1081  * @return {boolean} true 有权限,false 代表无权限
bc5e1e 1082  */
X 1083 AcEventWrapper.prototype.hasNotificationPermission = function () {
1084     if (acEventWrapper == null) {
1085         return null;
1086     }
1087     return acEventWrapper.hasNotificationPermission();
1088 };
1089
1090 //--2020-03-12 新增和NodeInfo相关的操作--//
1091
1092 /**
1093  * 通过选择器 获取第一个节点信息
1094  * <Br/>
1095  * 运行环境: 无障碍模式
1096  * <Br/>
1097  * 兼容版本: Android 7.0 以上
1098  *
1099  * @param selectors 选择器
b2d3f7 1100  * @return {null|NodeInfo} 对象或者null
bc5e1e 1101  */
X 1102 AcEventWrapper.prototype.getOneNodeInfo = function (selectors, timeout) {
1103     if (acEventWrapper == null) {
1104         return null;
1105     }
1106     var d = acEventWrapper.getOneNodeInfo(selectors.toJSONString(), timeout);
b2d3f7 1107     if (d == null || d == "") {
bc5e1e 1108         return null;
X 1109     }
b2d3f7 1110     try {
P 1111         d = JSON.parse(d);
1112         return new NodeInfo(d);
1113     } catch (e) {
bc5e1e 1114
b2d3f7 1115     }
P 1116     return null;
1117 };
1118 /**
1119  *
1120  * @param nid
1121  * @param selectors
1122  * @param timeout
1123  * @return {null|NodeInfo}
1124  */
bc5e1e 1125 AcEventWrapper.prototype.getOneNodeInfoForNode = function (nid, selectors, timeout) {
X 1126     if (acEventWrapper == null) {
1127         return null;
1128     }
1129     var d = acEventWrapper.getOneNodeInfoForNode(nid, selectors.toJSONString(), timeout);
b2d3f7 1130     if (d == null || d == "") {
bc5e1e 1131         return null;
X 1132     }
b2d3f7 1133     try {
P 1134         d = JSON.parse(d);
1135         return new NodeInfo(d);
1136     } catch (e) {
1137
1138     }
1139     return null;
bc5e1e 1140 };
X 1141
1142
1143 /**
1144  * 取得父级
1145  * @param uniqueId NodeInfo 中的uniqueId属性
b2d3f7 1146  * @return {null|NodeInfo} {NodeInfo 对象|null}
bc5e1e 1147  */
X 1148 AcEventWrapper.prototype.getNodeInfoParent = function (uniqueId) {
1149     if (acEventWrapper == null) {
1150         return null;
1151     }
1152     var d = acEventWrapper.getNodeInfoParent(uniqueId);
b2d3f7 1153     if (d == null || d == "") {
bc5e1e 1154         return null;
X 1155     }
1156     d = JSON.parse(d);
1157     return new NodeInfo(d);
1158 };
1159
1160
1161 /**
1162  * 取得单个子节点
1163  * @param uniqueId NodeInfo 中的uniqueId属性
1164  * @param index 子节点的索引
b2d3f7 1165  * @return {null|NodeInfo} {NodeInfo 对象|null}
bc5e1e 1166  */
X 1167 AcEventWrapper.prototype.getNodeInfoChild = function (uniqueId, index) {
1168     if (acEventWrapper == null) {
1169         return null;
1170     }
1171     var d = acEventWrapper.getNodeInfoChild(uniqueId, index);
b2d3f7 1172     if (d == null || d == "") {
bc5e1e 1173         return null;
X 1174     }
1175     d = JSON.parse(d);
1176     return new NodeInfo(d);
1177 };
1178
1179
1180 /**
1181  * 取得所有子节点
1182  * @param uniqueId NodeInfo 中的uniqueId属性
b2d3f7 1183  * @return {null|NodeInfo[]} 数组 选择到的节点集合
bc5e1e 1184  */
X 1185 AcEventWrapper.prototype.getNodeInfoAllChildren = function (uniqueId) {
1186     if (acEventWrapper == null) {
1187         return null;
1188     }
1189     var d = acEventWrapper.getNodeInfoAllChildren(uniqueId);
1190     return nodeInfoArray(d);
1191 };
1192
1193
1194 /**
1195  * 当前节点的所有兄弟节点
1196  * @param uniqueId NodeInfo 中的uniqueId属性
b2d3f7 1197  * @return {null|NodeInfo[]} NodeInfo 数组
bc5e1e 1198  */
X 1199 AcEventWrapper.prototype.getSiblingNodeInfo = function (uniqueId) {
1200     if (acEventWrapper == null) {
1201         return null;
1202     }
1203     var d = acEventWrapper.getSiblingNodeInfo(uniqueId);
1204     return nodeInfoArray(d);
1205 };
1206
1207
1208 /**
1209  * 当前节点的所有兄弟节点
1210  * @param uniqueId NodeInfo 中的uniqueId属性
b2d3f7 1211  * @return  {null|NodeInfo[]} 数组 选择到的节点集合
bc5e1e 1212  */
X 1213 AcEventWrapper.prototype.getSiblingNodeInfo = function (uniqueId) {
1214     if (acEventWrapper == null) {
1215         return null;
1216     }
1217     var d = acEventWrapper.getSiblingNodeInfo(uniqueId);
1218     return nodeInfoArray(d);
1219 };
1220
1221
1222 /**
1223  * 在当前节点前面的兄弟节点
1224  * @param uniqueId NodeInfo 中的uniqueId属性
b2d3f7 1225  * @return {null|NodeInfo[]} 数组 选择到的节点集合
bc5e1e 1226  */
X 1227 AcEventWrapper.prototype.getNextSiblingNodeInfo = function (uniqueId) {
1228     if (acEventWrapper == null) {
1229         return null;
1230     }
1231
1232     var d = acEventWrapper.getNextSiblingNodeInfo(uniqueId);
1233     return nodeInfoArray(d);
1234 };
1235
1236 /**
1237  * 在当前节点后面的兄弟节点
1238  * @param uniqueId NodeInfo 中的uniqueId属性
b2d3f7 1239  * @return {null|NodeInfo[]} 数组 选择到的节点集合
bc5e1e 1240  */
X 1241 AcEventWrapper.prototype.getPreviousSiblingNodeInfo = function (uniqueId) {
1242     if (acEventWrapper == null) {
1243         return null;
1244     }
1245     var d = acEventWrapper.getPreviousSiblingNodeInfo(uniqueId);
1246     return nodeInfoArray(d);
1247 };
1248
1249 /**
1250  * 对某个节点输入数据
1251  * <Br/>
1252  * 运行环境: 无障碍模式
1253  * <Br/>
1254  * 兼容版本: Android 7.0 以上
1255  *
1256  * @param uniqueId NodeInfo 中的uniqueId属性
1257  * @param content 数据字符串
b2d3f7 1258  * @return {boolean} true 代表成功 false代表失败
bc5e1e 1259  */
X 1260 AcEventWrapper.prototype.inputTextNodeInfo = function (uniqueId, content) {
1261     if (acEventWrapper == null) {
1262         return null;
1263     }
1264     return acEventWrapper.inputTextNodeInfo(uniqueId, content);
1265 };
b2d3f7 1266 /**
P 1267  *
1268  * @param uniqueId
1269  * @param content
1270  * @return {boolean}
1271  */
bc5e1e 1272 AcEventWrapper.prototype.pasteTextNodeInfo = function (uniqueId, content) {
X 1273     if (acEventWrapper == null) {
1274         return null;
1275     }
1276     utils.setClipboardText(content);
1277     return acEventWrapper.pasteTextNodeInfo(uniqueId, content);
1278 };
1279
1280
1281 /**
1282  * 使用输入法对某个节点输入数据
1283  * <Br/>
1284  * 运行环境: 无障碍模式
1285  * <Br/>
1286  * 兼容版本: Android 7.0 以上
1287  *
1288  * @param uniqueId NodeInfo 中的uniqueId属性
1289  * @param content 数据字符串
b2d3f7 1290  * @return {boolean} true 代表成功 false代表失败
bc5e1e 1291  */
X 1292 AcEventWrapper.prototype.imeInputTextNodeInfo = function (uniqueId, content) {
1293     if (acEventWrapper == null) {
1294         return null;
1295     }
1296     return acEventWrapper.imeInputTextNodeInfo(uniqueId, content);
1297 };
1298
b2d3f7 1299 /**
P 1300  *
1301  * @param uniqueId
1302  * @param content
1303  * @return {boolean}
1304  */
bc5e1e 1305 AcEventWrapper.prototype.imeInputKeyCodeNodeInfo = function (uniqueId, content) {
X 1306     if (acEventWrapper == null) {
1307         return null;
1308     }
1309     return acEventWrapper.imeInputKeyCodeNodeInfo(uniqueId, content);
1310
1311 };
1312
1313
1314 /**
1315  * 清除节点文本数据
1316  * <Br/>
1317  * 运行环境: 无障碍模式
1318  * <Br/>
1319  * 兼容版本: Android 7.0 以上
1320  *
1321  * @param uniqueId  NodeInfo 中的uniqueId属性
b2d3f7 1322  * @return {boolean} 布尔型| true代表成功
bc5e1e 1323  */
X 1324 AcEventWrapper.prototype.clearTextFieldNodeInfo = function (uniqueId) {
1325     if (acEventWrapper == null) {
1326         return false;
1327     }
1328     return acEventWrapper.clearTextFieldNodeInfo(uniqueId);
1329 };
1330
1331
1332 /**
1333  * 刷新节点缓存
1334  * <Br/>
1335  * 运行环境: 无障碍模式
1336  * <Br/>
1337  * 兼容版本: Android 7.0 以上
1338  *
1339  * @param uniqueId  NodeInfo 中的uniqueId属性
1340  */
1341 AcEventWrapper.prototype.refreshNodeInfo = function (uniqueId) {
1342     if (acEventWrapper == null) {
1343         return null;
1344     }
1345     acEventWrapper.refreshNodeInfo(uniqueId);
1346 };
1347
1348 /**
1349  * 节点信息是否有效
1350  * <Br/>
1351  * 运行环境: 无障碍模式
1352  * <Br/>
1353  * 兼容版本: Android 7.0 以上
1354  *
1355  * @param uniqueId  NodeInfo 中的uniqueId属性
b2d3f7 1356  * @return {boolean} true代表有效
bc5e1e 1357  */
X 1358 AcEventWrapper.prototype.isValidNodeInfo = function (uniqueId) {
1359     if (acEventWrapper == null) {
1360         return null;
1361     }
1362     return acEventWrapper.isValidNodeInfo(uniqueId);
1363 };
1364
1365 /**
1366  * 设置获取节点的模式
1367  * @param mode 1 是增强型, 2 是快速型,默认是增强型
1368  * @param fetchInvisibleNode 是否抓取隐藏的元素
1369  * @param fetchNotImportantNode 是否抓取不重要的元素
1370  * @param algorithm 节点查找算法,默认是nsf,分别有 nsf = 节点静态算法,bsf= 广度优先, dsf=深度度优先
b2d3f7 1371  * @return {boolean}
bc5e1e 1372  */
X 1373 AcEventWrapper.prototype.setFetchNodeMode = function (mode, fetchInvisibleNode, fetchNotImportantNode, algorithm) {
1374     if (acEventWrapper == null) {
1375         return null;
1376     }
1377     return acEventWrapper.setFetchNodeMode(mode, fetchInvisibleNode, fetchNotImportantNode, algorithm);
1378 };
b2d3f7 1379 /**
P 1380  *
1381  * @param data
1382  * @return {boolean}
1383  */
bc5e1e 1384 AcEventWrapper.prototype.setNodeDumpParam = function (data) {
X 1385     if (acEventWrapper == null) {
1386         return null;
1387     }
1388     return acEventWrapper.setNodeDumpParam(JSON.stringify(data));
1389 };
1390
1391
1392 /**
1393  * 设置要屏蔽的节点
1394  * 设置后,系统不会抓取这些节点数据
1395  * @param blockNode 字符串,以英文逗号分割,例如 clz,index,bounds
b2d3f7 1396  * @return {boolean}
bc5e1e 1397  */
X 1398 AcEventWrapper.prototype.setBlockNode = function (blockNode) {
1399     if (acEventWrapper == null) {
1400         return null;
1401     }
1402     return acEventWrapper.setBlockNode(blockNode);
1403 };
1404
b2d3f7 1405 /**
P 1406  *
1407  * @param flag
1408  * @return {boolean}
1409  */
bc5e1e 1410 AcEventWrapper.prototype.removeNodeFlag = function (flag) {
X 1411     if (acEventWrapper == null) {
1412         return null;
1413     }
1414     return acEventWrapper.removeNodeFlag(flag);
1415 };
b2d3f7 1416 /**
P 1417  *
1418  * @param flag
1419  * @return {boolean}
1420  */
bc5e1e 1421 AcEventWrapper.prototype.addNodeFlag = function (flag) {
X 1422     if (acEventWrapper == null) {
1423         return null;
1424     }
1425     return acEventWrapper.addNodeFlag(flag);
1426 };
1427
1428 /**
1429  * 多点触摸<br/>
1430  * 触摸参数: action :一般情况下 按下为0,弹起为1,移动为2<br/>
1431  * x: X坐标<br/>
1432  * y: Y坐标<br/>
1433  * pointer:设置第几个手指触摸点,分别是 1,2,3等,代表第n个手指<br/>
1434  * delay: 该动作延迟多少毫秒执行
1435  * @param touch1 第1个手指的触摸点数组,例如:[{"action":0,"x":1,"y":1,"pointer":1,"delay":20},
1436  * {"action":2,"x":1,"y":1,"pointer":1,"delay":20}
1437  * ]
1438  * @param touch2 第2个手指的触摸点数组
1439  * @param touch3 第3个手指的触摸点数组
1440  * @param timeout 多点触摸执行的超时时间,单位是毫秒
b2d3f7 1441  * @return {boolean}
bc5e1e 1442  */
X 1443 AcEventWrapper.prototype.multiTouch = function (touch1, touch2, touch3, timeout) {
1444     var x = [];
1445     if (touch1 != null) {
1446         x.push(touch1);
1447     }
1448     if (touch2 != null) {
1449         x.push(touch2);
1450     }
1451     if (touch3 != null) {
1452         x.push(touch3);
1453     }
1454     return this.multiTouch2(x, timeout);
1455 };
1456
1457 AcEventWrapper.prototype.multiTouch2 = function (pointArrays, timeout) {
1458     if (acEventWrapper == null) {
1459         return null;
1460     }
1461     var x = JSON.stringify(pointArrays);
1462     return acEventWrapper.multiTouch(x, timeout);
1463 };
1464
1465
1466 AcEventWrapper.prototype.multiTouchEx = function (pointArrays, timeout) {
1467     if (acEventWrapper == null) {
1468         return null;
1469     }
1470     var x = JSON.stringify(pointArrays);
1471     return acEventWrapper.multiTouchEx(x, timeout);
1472 };
1473
1474 /**
1475  * 向前滚动
1476  * <Br/>
1477  * 运行环境: 无障碍模式
1478  * <Br/>
1479  * 兼容版本: Android 7.0 以上
1480  *
1481  * @param selectors {@link S}数组
b2d3f7 1482  * @return {boolean} true 代表点击成功 false代表点击失败
bc5e1e 1483  */
X 1484 AcEventWrapper.prototype.scrollForward = function (selectors) {
1485     if (acEventWrapper == null) {
1486         return null;
1487     }
1488     return acEventWrapper.scrollForward(selectors.toJSONString());
1489 };
1490
1491 AcEventWrapper.prototype.scrollForwardNodeInfo = function (uniqueId) {
1492     if (acEventWrapper == null) {
1493         return null;
1494     }
1495     return acEventWrapper.scrollForwardNodeInfo(uniqueId);
1496 };
1497
1498
1499 /**
1500  * 向后滚动
1501  * <Br/>
1502  * 运行环境: 无障碍模式
1503  * <Br/>
1504  * 兼容版本: Android 7.0 以上
1505  *
1506  * @param selectors {@link S}数组
b2d3f7 1507  * @return {boolean} true 代表点击成功 false代表点击失败
bc5e1e 1508  */
X 1509 AcEventWrapper.prototype.scrollBackward = function (selectors) {
1510     if (acEventWrapper == null) {
1511         return null;
1512     }
1513     return acEventWrapper.scrollBackward(selectors.toJSONString());
1514 };
1515
1516 AcEventWrapper.prototype.scrollBackwardNodeInfo = function (uniqueId) {
1517     if (acEventWrapper == null) {
1518         return null;
1519     }
1520     return acEventWrapper.scrollBackwardNodeInfo(uniqueId);
1521 };
1522
1523 /**
1524  * 向左滚动
1525  * <Br/>
1526  * 运行环境: 无障碍模式
1527  * <Br/>
1528  * 兼容版本: Android 7.0 以上
1529  *
1530  * @param selectors {@link S}数组
b2d3f7 1531  * @return {boolean} true 代表点击成功 false代表点击失败
bc5e1e 1532  */
X 1533 AcEventWrapper.prototype.scrollLeft = function (selectors) {
1534     if (acEventWrapper == null) {
1535         return null;
1536     }
1537     return acEventWrapper.scrollLeft(selectors.toJSONString());
1538 };
1539
1540
1541 AcEventWrapper.prototype.scrollLeftNodeInfo = function (uniqueId) {
1542     if (acEventWrapper == null) {
1543         return null;
1544     }
1545     return acEventWrapper.scrollLeftNodeInfo(uniqueId);
1546 };
1547
1548
1549 /**
1550  * 向右滚动
1551  * <Br/>
1552  * 运行环境: 无障碍模式
1553  * <Br/>
1554  * 兼容版本: Android 7.0 以上
1555  *
1556  * @param selectors {@link S}数组
b2d3f7 1557  * @return {boolean} true 代表点击成功 false代表点击失败
bc5e1e 1558  */
X 1559 AcEventWrapper.prototype.scrollRight = function (selectors) {
1560     if (acEventWrapper == null) {
1561         return null;
1562     }
1563     return acEventWrapper.scrollRight(selectors.toJSONString());
1564 };
1565
1566 AcEventWrapper.prototype.scrollRightNodeInfo = function (uniqueId) {
1567     if (acEventWrapper == null) {
1568         return null;
1569     }
1570     return acEventWrapper.scrollRightNodeInfo(uniqueId);
1571 };
1572
1573 /**
1574  * 向上滚动
1575  * <Br/>
1576  * 运行环境: 无障碍模式
1577  * <Br/>
1578  * 兼容版本: Android 7.0 以上
1579  *
1580  * @param selectors {@link S}数组
b2d3f7 1581  * @return {boolean} true 代表点击成功 false代表点击失败
bc5e1e 1582  */
X 1583 AcEventWrapper.prototype.scrollUp = function (selectors) {
1584     if (acEventWrapper == null) {
1585         return null;
1586     }
1587     return acEventWrapper.scrollUp(selectors.toJSONString());
1588 };
1589
1590 AcEventWrapper.prototype.scrollUpNodeInfo = function (uniqueId) {
1591     if (acEventWrapper == null) {
1592         return null;
1593     }
1594     return acEventWrapper.scrollUpNodeInfo(uniqueId);
1595 };
1596
1597 /**
1598  * 向下滚动
1599  * <Br/>
1600  * 运行环境: 无障碍模式
1601  * <Br/>
1602  * 兼容版本: Android 7.0 以上
1603  *
1604  * @param selectors {@link S}数组
b2d3f7 1605  * @return {boolean} true 代表点击成功 false代表点击失败
bc5e1e 1606  */
X 1607 AcEventWrapper.prototype.scrollDown = function (selectors) {
1608     if (acEventWrapper == null) {
1609         return null;
1610     }
1611     return acEventWrapper.scrollDown(selectors.toJSONString());
1612 };
1613 AcEventWrapper.prototype.scrollDownNodeInfo = function (uniqueId) {
1614     if (acEventWrapper == null) {
1615         return null;
1616     }
1617     return acEventWrapper.scrollDownNodeInfo(uniqueId);
1618 };
1619
1620 AcEventWrapper.prototype.readResAutoImage = function (fileName) {
1621     if (acEventWrapper == null) {
1622         return null;
1623     }
1624     return acEventWrapper.readResAutoImage(fileName);
1625 };
1626 /**
1627  * 获取最近的节点事件出发的时间
1628  *
b2d3f7 1629  * @return {number} 长整型时间,毫秒级别
bc5e1e 1630  */
X 1631 AcEventWrapper.prototype.lastNodeEventTime = function () {
1632     if (agentEventWrapper == null) {
1633         return null;
1634     }
1635     return acEventWrapper.lastNodeEventTime();
1636 };
1637
1638
1639 AcEventWrapper.prototype.press = function (x, y, delay) {
1640     if (agentEventWrapper == null) {
1641         return null;
1642     }
1643     return acEventWrapper.press(x, y, delay);
1644 };
1645
1646
1647 /**
1648  * 执行按下输入事件
1649  * @param x         x坐标
1650  * @param y         y坐标
b2d3f7 1651  * @return {boolean} true 代表成功 false代表失败
bc5e1e 1652  */
X 1653 AcEventWrapper.prototype.touchDown = function (x, y) {
1654     if (acEventWrapper == null) {
1655         return;
1656     }
b2d3f7 1657     return acEventWrapper.touchDown(x, y, 1);
bc5e1e 1658 };
X 1659 /**
1660  * 执行移动输入事件
1661  * @param x         x坐标
1662  * @param y         y坐标
b2d3f7 1663  * @return {boolean} true 代表成功 false代表失败
bc5e1e 1664  */
X 1665 AcEventWrapper.prototype.touchMove = function (x, y) {
1666     if (acEventWrapper == null) {
1667         return;
1668     }
b2d3f7 1669     return acEventWrapper.touchMove(x, y, 1);
bc5e1e 1670 };
X 1671 /**
1672  * 执行弹起输入事件
1673  * @param x         x坐标
1674  * @param y         y坐标
b2d3f7 1675  * @return {boolean} true 代表成功 false代表失败
bc5e1e 1676  */
X 1677 AcEventWrapper.prototype.touchUp = function (x, y) {
1678     if (acEventWrapper == null) {
1679         return;
1680     }
b2d3f7 1681     return acEventWrapper.touchUp(x, y, 1);
bc5e1e 1682 };