当我在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
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的方式