11# 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+
28
39> 写这个项目前github上已有个[ hmdirver] ( https://github.com/mrx1203/hmdriver ) ,但它是侵入式(需要提前在手机端安装一个testRunner app)。另外鸿蒙官方提供的` hypium ` 自动化框架,使用较复杂,依赖繁杂。于是决定重写一套框架,解决上述两个框架的弊端。
410
3238- 支持Toast获取
3339- [ TODO] 全场景弹窗处理
3440- [ TODO] 操作标记
41+ - [ TODO] Inspector
3542
3643
3744
@@ -66,13 +73,12 @@ pip3 install -U "hmdriver[opencv-python]"
6673``` python3
6774from hmdriver2.driver import Driver
6875
69- d = Driver(" FMR0223C13000649" )
76+ d = Driver(" FMR0223C13000649" ) # 参数替换成你的serial
7077
7178print (d.device_info)
7279
7380# 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>)
7682```
7783
7884
@@ -88,6 +94,7 @@ from hmdriver2.driver import Driver
8894d = Driver(" FMR0223C13000649" )
8995```
9096
97+ 参数` serial ` 通过` hdc list targets ` 命令获取
9198
9299初始化driver后,下面所有的操作都是调用dirver实现
93100
@@ -108,7 +115,7 @@ d.uninstall_app("com.kuaishou.hmapp")
108115``` python3
109116d.start_app(" com.kuaishou.hmapp" , " EntryAbility" )
110117```
111- 传入的两个参数分别是` package_name ` , ` page_name ` , 可以通过hdc命令获取` hdc shell aa dump -l `
118+ 传入的两个参数分别是` package_name ` , ` page_name ` , 可以通过hdc命令获取` hdc shell aa dump -l `
112119
113120
114121### 停止App
@@ -370,23 +377,22 @@ g.action()
370377```
371378也支持链式调用(推荐)
372379``` 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()
374381```
375382
376- 参数` x ` , ` y ` 表示坐标位置,可以为绝对坐标值,也可以为相当坐标(屏幕百分比),` interval ` 表示手势持续的时间,单位秒
383+ 参数` x ` , ` y ` 表示坐标位置,可以为绝对坐标值,也可以为相当坐标(屏幕百分比),` interval ` 表示手势持续的时间,单位秒。
377384
378-
379- 这是一个复杂手势的效果展示 [ Watch the gif] ( /docs/demo_gesture.gif )
380-
381-
382- Notes:如果只有start手势,则等价于点击
385+ 如果只有start手势,则等价于点击:
383386``` python3
384387d.gesture.start(x, y).action() # click
385388
386389# 等价于
387390d.click(x, y)
388391```
389392
393+ * 如下是一个复杂手势的效果展示*
394+
395+ ![ Watch the gif] ( ./docs/gesture.gif )
390396
391397
392398## 控件操作
@@ -424,6 +430,7 @@ Notes:当同一界面有多个属性相同的元素时,`index`属性非常
424430** 模糊定位TODO**
425431
426432** 组合定位**
433+
427434指定多个` by ` 属性进行元素定位
428435``` python3
429436# 定位`type`为Button且`text`为tab_recrod的元素
@@ -440,7 +447,7 @@ d(id="drag", isBefore=True)
440447```
441448
442449### 控件查找
443- 结合上面讲的元素选择器 ,就可以进行元素的查找
450+ 结合上面讲的控件选择器 ,就可以进行元素的查找
444451``` python3
445452d(text = " tab_recrod" ).exists()
446453d(type = " Button" , text = " tab_recrod" ).exists()
0 commit comments