Appium和uiautomator2安装和使用


当我在MAC平台上,通过Python(python-client )编写了一个appium自动化脚本并执行,请求会首先到 appium.dum (MAC下的appium-Server),appium-Server通过解析,驱动iOS设备来执行appium自动化脚本。

或者,我在Windows平台上,通过Java( java-client )编写了一个appium自动化脚本并执行,请求会首先到 appiumForWindow.zip(Window下的appium-Server),appium-Server通过解析,驱动Android虚拟机或真机来执行appium脚本。

所以,你会看到appium的强大之处就在于此。

 

 

(1)安装安卓sdk 

Android SDK 下载地址:

http://tools.android-studio.org/index.php/sdk

 

(2)添加环境变量

是新增喔,可不是直接在path里  这个地址就是你sdk所在路径

ANDROID_HOME  D:\android\Android\sdk

 

(3)安装appium-server

https://bitbucket.org/appium/appium.app/downloads/ 安装包地址:

安装完成 在命令窗口输入:appium-doctor 检查环境 (以上两个安装完成之前要保证java jdk已安装)

要出现ALL checks 温热successful 才是正确的

如果提示: “appium-doctor”不是内部或外部命令,找到Appium的安装目录,例如:

C:\Program Files\Appium\node_modules\.bin

 

(4)Appium-Python-Client。
 
直接在命令窗口输入 pip install Appium-Python-Client。
 
 
 
二 uiautomator2
4,weditor链接手机进行调式:
 WEditor可以理解为在浏览器中打开的uiautomatorviewer,个人体验比uiautomatorviewer更好用,不会像uiautomatorviewer那样由于安卓系统的不同,会出现各种情况,还支持安卓、ios、Neco(beta),本人是体验了uiautomatorviewer的坑以后,决定投向WEditor。

我用的python3 直接pip 安装的uiautomator2 和weditor

 

1、安装WEditor:进入cmd,输入pip install --pre --upgrade weditor

2、打开WEditor:在cmd下,输入python -m weditor,此时会自动打开默认浏览器

 

出现的页面Android 右边的空 填 adb devices 查到的 手机devices

 

三,列举一下uiautomator2的常用命令:

 

 

1.点击特定对象中心位置:
 
d(text="Settings").click()
2.等待对象显示并点击,等待最多10s:
 
d(text="Settings").click(timeout=10)
3.当10s内对象出现就点击,默认0s:
 
clicked = d(text='Skip').click_exists(timeout=10.0)
4.点击并轮询对象直到消失,其中maxretry为最多点击次数,默认10;interval为轮询时间间隔,默认1:
 
d(text="Skip").click_gone(maxretry=10, interval=1.0)
5.长按指定的对象,duration为按住时间,timeout为超时时间:
 
d(text="Settings").long_click(duration=10,timeout=10)
6.拖动指定对象到x,y位置,0.5s完成:
 
d(text="Settings").drag_to(x, y, duration=0.5)
7.拖动指定对象到另一个对象位置,0.5s内完成:
 
d(text="Settings").drag_to(text="Clock", duration=0.5)
8.双指从(a,b),(c,d)滑动(a1,b1),(c1,d1),步长100:
 
d().gesture((a,b),(c,d), a1,b1),(c1,d1),steps=100)
9.从屏幕外侧向中心滑动,percent为左右起始位置占两边的比例:
 
d().pinch_out(percent=33, steps=100)
 
10.从屏幕中心向外侧滑动,percent为左右起始位置占两边的比例:
 
d().pinch_out(percent=33, steps=100)
11.等待对象:
 
d(text='相机').wait(10)
 
12.等待对象消失,最多等待10s:
 
d(text='相机').wait_gone(timeout=10)
 
13.滚动:
 
a.向上滚动:d(scrollable=True).scroll(steps=10)
 
b.向下滑动:d(scrollable=True).scroll.vert.backward()
 
c.水平向右滚动:d(scrollable=True).scroll.horiz.forward(steps=50)
 
d.水平向左滚动:d(scrollable=True).scroll.horiz.backward(steps=50)
 
e.水平滑动到最左边:d(scrollable=True).scroll.horiz.toBeginning(steps=100, max_swipes=1000)
 
f.水平滑动到最右边:d(scrollable=True).scroll.horiz.toEnd(steps=100, max_swipes=1000)
 
g.竖直滑动到结尾:d(scrollable=True).scroll.toEnd()
 
h.竖直滑动到开头:d(scrollable=True).scroll.toBeginning(steps=50)
 
i.滑动到指定位置(测试):d(scrollable=True).scroll.to(text ='测试')
 
 
四,启动app的三种方式:
 
print("启动app")
# pkgname = 'com.finshell.custapp'
# activity = 'com.finshell.custapp.ui.activity.SplashActivity'
# cmd = 'adb shell am start -n' + pkgname + '/' + activity
# os.system(cmd)
#以上为第一种方式 才用的是adb 命令通过pkg和activity来启动的

那么问题来了 如何获取这两个东西呢:可以才用
aapt dump badging这个命令 后面加app的apk就行 这个aapt命令可以在Android\android-sdk里面找到SDK Manager.exe 
打开这个程序,在tools下面 安装android-sdk BUild-tools就行了 aapt命令就可以用了

# time.sleep(1)
d = u2.connect()
# d.app_start('com.finshell.custapp')#第二种启动app的方式
d.session('com.finshell.custapp')#第三种启动app的方式


 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM