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