1
1
# hmdriver2
2
+ [ ![ github actions] ( https://github.com/codematrixer/hmdriver2/actions/workflows/release.yml/badge.svg )] ( https://github.com/codematrixer/hmdriver2/actions )
3
+ [ ![ pypi version] ( https://img.shields.io/pypi/v/hmdriver2.svg )] ( https://pypi.python.org/pypi/hmdriver2 )
4
+ ![ python] ( https://img.shields.io/pypi/pyversions/hmdriver2.svg )
5
+ [ ![ downloads] ( https://pepy.tech/badge/hmdriver2 )] ( https://pepy.tech/project/hmdriver2 )
6
+
7
+
2
8
3
9
> 写这个项目前github上已有个[ hmdirver] ( https://github.com/mrx1203/hmdriver ) ,但它是侵入式(需要提前在手机端安装一个testRunner app)。另外鸿蒙官方提供的` hypium ` 自动化框架,使用较复杂,依赖繁杂。于是决定重写一套框架,解决上述两个框架的弊端。
4
10
32
38
- 支持Toast获取
33
39
- [ TODO] 全场景弹窗处理
34
40
- [ TODO] 操作标记
41
+ - [ TODO] Inspector
35
42
36
43
37
44
@@ -66,13 +73,12 @@ pip3 install -U "hmdriver[opencv-python]"
66
73
``` python3
67
74
from hmdriver2.driver import Driver
68
75
69
- d = Driver(" FMR0223C13000649" )
76
+ d = Driver(" FMR0223C13000649" ) # 参数替换成你的serial
70
77
71
78
print (d.device_info)
72
79
73
80
# ouput:
74
- DeviceInfo(productName = ' HUAWEI Mate 60 Pro' , model = ' ALN-AL00' , sdkVersion = ' 12' , sysVersion = ' ALN-AL00 5.0.0.60(SP12DEVC00E61R4P9log)' , cpuAbi = ' arm64-v8a' , wlanIp = ' 172.31.125.111' , displaySize = (1260 , 2720 ), displayRotation = < DisplayRotation.ROTATION_0 : 0 > )
75
-
81
+ # DeviceInfo(productName='HUAWEI Mate 60 Pro', model='ALN-AL00', sdkVersion='12', sysVersion='ALN-AL00 5.0.0.60(SP12DEVC00E61R4P9log)', cpuAbi='arm64-v8a', wlanIp='172.31.125.111', displaySize=(1260, 2720), displayRotation=<DisplayRotation.ROTATION_0: 0>)
76
82
```
77
83
78
84
@@ -88,6 +94,7 @@ from hmdriver2.driver import Driver
88
94
d = Driver(" FMR0223C13000649" )
89
95
```
90
96
97
+ 参数` serial ` 通过` hdc list targets ` 命令获取
91
98
92
99
初始化driver后,下面所有的操作都是调用dirver实现
93
100
@@ -108,7 +115,7 @@ d.uninstall_app("com.kuaishou.hmapp")
108
115
``` python3
109
116
d.start_app(" com.kuaishou.hmapp" , " EntryAbility" )
110
117
```
111
- 传入的两个参数分别是` package_name ` , ` page_name ` , 可以通过hdc命令获取` hdc shell aa dump -l `
118
+ 传入的两个参数分别是` package_name ` , ` page_name ` , 可以通过hdc命令获取` hdc shell aa dump -l `
112
119
113
120
114
121
### 停止App
@@ -370,23 +377,22 @@ g.action()
370
377
```
371
378
也支持链式调用(推荐)
372
379
``` python3
373
- d.gesture.start(x, y , interval = .5 ).move(x, y ).pause(interval = 1 ).move(x, y ).action()
380
+ d.gesture.start(x1, y1 , interval = .5 ).move(x2, y2 ).pause(interval = 1 ).move(x3, y3 ).action()
374
381
```
375
382
376
- 参数` x ` , ` y ` 表示坐标位置,可以为绝对坐标值,也可以为相当坐标(屏幕百分比),` interval ` 表示手势持续的时间,单位秒
383
+ 参数` x ` , ` y ` 表示坐标位置,可以为绝对坐标值,也可以为相当坐标(屏幕百分比),` interval ` 表示手势持续的时间,单位秒。
377
384
378
-
379
- 这是一个复杂手势的效果展示 [ Watch the gif] ( /docs/demo_gesture.gif )
380
-
381
-
382
- Notes:如果只有start手势,则等价于点击
385
+ 如果只有start手势,则等价于点击:
383
386
``` python3
384
387
d.gesture.start(x, y).action() # click
385
388
386
389
# 等价于
387
390
d.click(x, y)
388
391
```
389
392
393
+ * 如下是一个复杂手势的效果展示*
394
+
395
+ ![ Watch the gif] ( ./docs/gesture.gif )
390
396
391
397
392
398
## 控件操作
@@ -424,6 +430,7 @@ Notes:当同一界面有多个属性相同的元素时,`index`属性非常
424
430
** 模糊定位TODO**
425
431
426
432
** 组合定位**
433
+
427
434
指定多个` by ` 属性进行元素定位
428
435
``` python3
429
436
# 定位`type`为Button且`text`为tab_recrod的元素
@@ -440,7 +447,7 @@ d(id="drag", isBefore=True)
440
447
```
441
448
442
449
### 控件查找
443
- 结合上面讲的元素选择器 ,就可以进行元素的查找
450
+ 结合上面讲的控件选择器 ,就可以进行元素的查找
444
451
``` python3
445
452
d(text = " tab_recrod" ).exists()
446
453
d(type = " Button" , text = " tab_recrod" ).exists()
0 commit comments