移動端測試 - appium for windows


before

扯淡篇我們知道了關於appium在windows下的出裝順序:

  • Python環境:Python3.6.6, 或者別的3.x版本。你可以在下面的百度雲鏈接中下載,推薦Python3.5以上,為了方便編寫代碼,還需要安裝PyCharm IDE(可選,也可以vs code)。
  • node.js。
  • Java環境:要求是java jdk 1.8及以上。
  • appium。
  • Android SDK。
  • 手機/模擬器:可以是夜神模擬器或者是其他的。
  • Appium-Python-Client。

我的環境是:

win 10 專業版
Java jdk1.8
Python3.6.6
PyCharm2018.1
小米手機5S/夜神模擬器6.0.7.5
appium:1.7

appium for win 全家桶百度雲鏈接:

鏈接:https://pan.baidu.com/s/1q7uEdv9YHxG-LRzJ20I3cQ 提取碼:iq52

開始安裝吧。

Python for Windows

參考:https://www.cnblogs.com/Neeo/p/10864123.html#python

Node.js for Windows

參考:https://www.cnblogs.com/Neeo/articles/11637320.html

JAVA JDK for Windows

參考:https://www.cnblogs.com/Neeo/articles/11954283.html

Appium安裝

appium支持客戶端和終端方式進行安裝,這里為了方便,我們選擇客戶端的方式安裝。

appium桌面版安裝

下載與安裝

Gighub地址:https://github.com/appium/appium-desktop/releases

下載到本地是個exe可執行文件,雙擊exe文件,一路默認安裝即可。

測試

打開appium軟件之后。

如上圖,在simple欄,默認監聽0.0.0.04723端口,這里我們將host改為127.0.0.1,然后點擊start server

可以看到,啟動了一個HTTP服務,監聽本機的127.0.0.1:4723,這個時候就可以使用瀏覽器地址欄訪問了。

右上側的三個圖標分別是啟動、下載日志、停止服務。

此時,說明appium安裝成功。具體使用,我們后面再說。

appium終端安裝

Windows平台啊(說多了都是淚),很可能由於這樣或那樣的問題導致安裝失敗,所以,這里提供了兩套方式安裝(其實就是命令不同,但大同小異)方案。
為慮勝先慮敗,先來說怎么卸載(我就一不小心安裝了最新版...):

npm uninstall -g appium

# 完事在安裝指定版本
npm install -g appium@1.7.2   # 指定版本

Plan A
終端安裝(使用的是國外的源):

npm install -g appium
npm install -g appium@1.7.2   # 指定版本

很大可能被牆導致安裝失敗,so,淘寶鏡像考慮一下。
PS:根據需要選擇最新版還是指定版本,看好了再粘貼。

# 默認安裝最新版的
npm --registry http://registry.npm.taobao.org install appium -g

# 安裝指定版本appium
npm --registry http://registry.npm.taobao.org install appium@1.7.2 -g

安裝指定版本的可能失敗......不要怕,你可能連第一條命令都執行失敗....
安裝appium-doctor檢測:

npm --registry http://registry.npm.taobao.org install appium-doctor -g

驗證:

appium-doctor

PS:我使用這個命令是失敗的,but,anyway.......
啟動appium驗證:

C:\Users\Anthony>appium
[Appium] Welcome to Appium v1.15.1
[Appium] Appium REST http interface listener started on 0.0.0.0:4723

OK,安裝成功。
很可能你按照這套流程安裝失敗了.....
來看備用Plan B方案。
Plan B
使用cnpm安裝,首先要先配置淘寶鏡像的cnpm:

npm install -g cnpm --registry=https://registry.npm.taobao.org

# 示例
C:\windows\system32>npm install -g cnpm --registry=https://registry.npm.taobao.org
C:\Users\Anthony\AppData\Roaming\npm\cnpm -> C:\Users\Anthony\AppData\Roaming\npm\node_modules\cnpm\bin\cnpm
+ cnpm@6.1.0
added 354 packages, removed 363 packages, updated 144 packages and moved 3 packages in 37.303s

這一步沒問題的話,驗證是否安裝成功:

cnpm -v

C:\windows\system32>npm -v
5.5.1

我的cnpm版本是5.5.1。
接下來,使用cnpm安裝appium:

cnpm install -g appium
cnpm install -g appium@1.7.2

# cnpm install -g appium-doctor      # 安裝與否無所謂,我反正是安裝成功執行失敗

啟動appium

appium -p 4700 -bp 4701 -U 127.0.0.1:62001 --no-reset --session-override

參數說明:

  • -p是appium監聽端口。
  • -bp是bootstrap的監聽端口。
  • -U(U大寫)是可用的設備,也就是adb devices返回的設備列表。
  • --no-reset即可避免執行用例的時候再次安裝app。
  • --session-override不必每次重啟session。

示例:

C:\windows\system32>appium -p 4700 -bp 4701 -U 127.0.0.1:62001 --no-reset --session-override
[Appium] Welcome to Appium v1.15.1
[Appium] Non-default server args:
[Appium]   port: 4700
[Appium]   bootstrapPort: 4701
[Appium]   sessionOverride: true
[Appium]   udid: 127.0.0.1:62001
[Appium]   noReset: true
[Appium] Deprecated server args:
[Appium]   -U,--udid => --default-capabilities '{"udid":"127.0.0.1:62001"}'
[Appium]   --no-reset => --default-capabilities '{"noReset":true}'
[Appium] Default capabilities, which will be added to each request unless overridden by desired capabilities:
[Appium]   udid: 127.0.0.1:62001
[Appium]   noReset: true
[Appium] Appium REST http interface listener started on 0.0.0.0:4700

要是還是安裝不成功......還是考慮下是否需要喝杯熱茶思考一下人生吧!

Nox for Windows

參考:https://www.cnblogs.com/Neeo/articles/11601845.html

Android SDK for windows

SDK:(software development kit)軟件開發工具包。被軟件開發工程師用於為特定的軟件包、軟件框架、硬件平台、操作系統等建立應用軟件的開發工具的集合。因此,Android SDK 指的是Android專屬的軟件開發工具包。

下載安裝

官網下載地址:https://www.androiddevtools.cn/

  • 下載一個SDK Tools。

  • 除此之外,還需要一些其他的依賴包,比如SDK Platform-Tools、Build-Tools等。

  • 為了簡單,請使用之前提供的全家桶內提供的軟件包。

你以為解壓完了就沒事了?沒完,還有環境變量需要添加。

我本機將壓縮包解壓到了G:\software\andriod-sdk-windows這個目錄。

那么,我們需要將這個目錄下的:

G:\software\andriod-sdk-windows\tools
G:\software\andriod-sdk-windows\platform-tools
G:\software\andriod-sdk-windows\build-tools\27.0.1

如上示例的三個目錄,一一添加到環境變量中。

測試

終端輸入adb測試:

出現一大堆命令提示符就OK啦。

Android SDK tools

首先,這個時候,你的Python環境、Java JDK環境、夜神模擬器、android sdk、appium環境都是配置好的。
再來看都有哪些命令吧,這個時候,請啟動夜神模擬器。
然后找個apk測試,比如說京東APP,我們從官網把它下載到電腦上:

官網:https://app.jd.com/android.html
下載地址:https://storage.360buyimg.com/jdmobile/JDMALL-PC2.apk
我們將apk下載到本地的某個目錄,比如桌面。

我們要牢記三個命令和一個工具的使用。

首先在G:\software\andriod-sdk-windows\tools目錄下:

  • aapt命令,用來檢測apk的包名和activity名稱。
  • uiautomatorviewer.bat文件是Android SDK自帶的一個元素定位工具,我們后續會用到它。

G:\software\andriod-sdk-windows\platform-tools目錄中:

  • adb( Android Debug Bridge)命令,也就是android調試橋。也就是調試用的命令工具。

aapt

先來看aapt命令。

C:\Users\Anthony>aapt dump badging apk包路徑
# 也可以簡寫為
C:\Users\Anthony>aapt d badging apk包路徑

在一串的返回結果中,我們要重點關注兩個點:

C:\Users\Anthony>aapt d badging C:\Users\Anthony\Desktop\JDMALL-PC2.apk
activity name='com.jingdong.app.mall.main.MainActivity'  # activity名稱
package: name='com.jingdong.app.mall'   # apk包名

記住它們,后續都能用上。

adb

PS:首先來說一個我遇到的坑,每次使用adb connect連接夜神模擬器后,都需要重啟模擬器才能進行Python腳本操作。
再來看adb都有哪些命令。
查看版本

C:\Users\Anthony>adb version
Android Debug Bridge version 1.0.36
Revision 0e9850346394-android

連接可用的設備(手機/模擬器)
我們知道夜神模擬器監聽本機的62001(或者52001)端口,所以,我們使用adb命令去連接它。

C:\Users\Anthony>adb connect 127.0.0.1:62001
connected to 127.0.0.1:62001

沒有問題,就是連接成功。
檢查設備(手機/模擬器)是否可用

C:\Users\Anthony>adb devices
List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

這個提示是說明夜神模擬器沒有打開,因為沒有可用的可連接設備。
現在,我們將夜神模擬器啟動后,再執行這條命令:

C:\Users\Anthony>adb devices
List of devices attached
127.0.0.1:62001 device

現在有了一個可用的設備,我們知道這個設備是夜神模擬器。現在連接上這個設備后就可以執行一些操作了。

安裝APP
給電腦上的android模擬器/夜神模擬器安裝APP,這里還是以我們之前的京東APP,終端輸入:

adb install app APP路徑地址

# 示例, 安裝京東apk
C:\Users\Anthony>adb install C:\Users\Anthony\Desktop\JDMALL-PC2.apk
[100%] /data/local/tmp/JDMALL-PC2.apk
        pkg: /data/local/tmp/JDMALL-PC2.apk
Success

C:\Users\Anthony>

使用adb命令將設備安裝到指定設備,適用於多個設備同時存在的情況。

# 安裝
adb -s 設備號 install apk安裝包路徑
# 卸載
adb -s 設備號 uninstall package包名

再來學習一個命令:

abd install -r JDMALL-PC2.apk

安裝apk到sd卡。

卸載APP
首先要知道APP的包名,當然,不是APP的名字,而是使用aapt查看出來的包名com.jingdong.app.mall

C:\Users\Anthony>adb uninstall com.jingdong.app.mall
Success

下面的命令是卸載APP但保留數據和緩存文件:

adb uninstall -k com.jingdong.app.mall

啟動/停止Server
一般來說,下面兩個命令基本不會用到,因為只要設備連接正確,會自動啟動 adb server 的,不過大家也需要知道這倆命令:

# 啟動
adb start-server
# 停止
adb kill-server

列出手機中裝的所有APP的包名

adb shell pm list packages

列出系統應用的所有包名

adb shell pm list packages -s

列出第三方應用包名(排除系統應用的)

adb shell pm list packages -3

清除應用數據及緩存

adb shell pm clear <package name>
# 示例
C:\Users\Anthony>adb shell pm clear com.jd.app.reader
Success

uiautomatorviewer.bat

uiautomatorviewer是android SDK自帶的一個元素定位工具。通過截屏並分析XML布局文件的方式,為用戶提供控件信息查看服務。

使用uiautomatorviewer,你可以檢查一個應用的UI來查看應用的布局和組件以及相關的屬性。該工具位於SDK目錄下的tools\bin子目錄下。
由於我們將G:\software\andriod-sdk-windows\tools目錄添加到環境變量,所以我們直接可以在終端中執行這個文件。

C:\Users\Anthony>uiautomatorviewer.bat

如果沒有添加環境變量,你也可以從上述的目錄中找到它,雙擊就OK了。
啟動之后是這樣的:

此時,如果你的模擬器或者手機已經連接就緒,那么可以點擊Devices Screenshot按鈕進行刷新頁面。

現在,可以看到關於京東閱讀啟動頁面的布局已經呈現在我們眼前,你就可以根據元素搞些事情了。

注意:這里可能有坑,就是用uiautomatorviewer的時候最好關閉appium的監聽連接,否則會報錯Error obtaining UI hierarchy


這是因為當我們通過腳本訪問apk時,由於appium也在訪問SDK的工具,而此時uiautomatorviewer也去調用SDK的工具,這會引起端口沖突,所以,當使用uiautomatorviewer時,請斷開appium的連接.......別問為什么,我也好煩

重要的操作

為了方便使用夜神模擬器,這里需要對Android SDK和夜神模擬器做一些配置。

‪G:\software\andriod-sdk-windows\platform-tools\adb.exe文件拷貝到夜神模擬器的啟動目錄G:\software\Nox\bin下,並重命名為nox_adb.exe

但是夜神模擬器的啟動目錄下已經有了nox_adb.exe文件,沒關系,我們將它備份一下即可。

這里只是將原文件備份為.bak文件,你也可以以其他形式備份,都OK的。
另外,可能由於夜神模擬器的版本不同,啟動目錄也不相同,這點需要注意。
最后,你可能會問,為什么要多這么一步操作,是因為,當啟動夜神模擬器后,它會啟動nox_adb.exe文件,而這個文件已經被我們偷梁換柱替換為android SDK的adb.exe文件。在后續的appium連接操作android SDK的某些功能時,就能無縫的操作夜神模擬器了,夜神模擬器相對於android SDK,它相對簡單,運行速度更快一些。

Appium-Python-Client

Python想要操作appium,就要有專門的的連接庫,這個庫需要下載:

pip install appium-python-client   # 也可下載指定版本:0.47

測試:

Python 3.6.2 (v3.6.2:5fd33b5, Jul  8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import appium
>>>

不報錯就是成功。

第一個測試用例

下載/卸載APP

當所有的環境與工具都准備好之后。我們就開始學習怎么操作吧。

  • 首先打開夜神模擬器。
  • 打開電腦終端(cmd)。使用adb命令連接模擬器。並測試是否連接成功。

用到的兩個命令:

adb connect ip:port		# 連接模擬器
adb devices		# 檢測手機/模擬器是否可用

  • 安裝/卸載一個APP。

用到的命令:

adb install apk文件路徑
adb uninstall apk包名  
aapt d badging apk文件路徑    # 獲取apk文件包名

注意,卸載時的包名不是本地的apk文件名,而是包名,如果不清楚,可以使用命令獲取。

C:\Users\Anthony>adb install C:\Users\Anthony\Desktop\jdread_guanwang_release.apk
[100%] /data/local/tmp/jdread_guanwang_release.apk
        pkg: /data/local/tmp/jdread_guanwang_release.apk
Success

C:\Users\Anthony>aapt d badging C:\Users\Anthony\Desktop\jdread_guanwang_release.apk
package: name='com.jd.app.reader' versionCode='1011102' 

C:\Users\Anthony>adb uninstall com.jd.app.reader
Success

aapt命令獲取到了包名,然后就可以使用adb命令進行安裝和卸載了。
這個過程我們可以在夜神模擬器中看到效果。
完事,我們繼續將京東閱讀的APP安裝到夜神模擬器中去,方便后續的操作。
接下來,我們要來點代碼了。
比如說如何通過Python代碼啟動APP。
首先,打開appium連接上android SDK(展示效果由夜神模擬器呈現)。在連接過程中,需要一些必要的參數,需要我們提前獲取。

platformName

平台名稱,一般都是android平台,所以,直接寫android即可。

platformVersion

如果你是android平台,你要告訴appium使用的android版本。

deviceName

手機設備名稱,通過adb devices命令查看(連接以后才能看見的)

appPackage && appActivity
appPackage:apk包名。
appActivity:apk的launcherActivity。
都可以通過aapt命令找到:

C:\Users\Anthony>aapt d badging C:\Users\Anthony\Desktop\jdread_guanwang_release.apk
package: name='com.jd.app.reader' versionCode='1011102' 
launchable activity name='com.jingdong.app.reader.logo.JdLogoActivity'label='' icon=''

然后,打開appium,並且修改host,然后點擊啟動服務。

完事點擊Start Inspector Session進行必要的配置。

接下,開始配置json數據。

將之前的幾個參數一一添加進去即可。然后也可以使用Save保存起來。

保存后下次就可以繼續使用了。

完事點擊Start Session開始連接。

出現這個畫面就說明appium成功連接上了android SDK,並且夜神模擬器也成功打開了京東閱讀。

用Python打開APP

此時,我們將夜神模擬器保持默認開啟狀態,appium監聽127.0.0.1:4723即可。

然后編輯Python代碼:

from appium import webdriver

desired_caps = {
    "platformName": "android",
    "platformVersion": "4.4.2",
    "deviceName": "127.0.0.1:62001",
    "appPackage": "com.jd.app.reader",
    "appActivity": "com.jingdong.app.reader.logo.JdLogoActivity"
}

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)


歡迎斧正,that's all see also:[UI Automator獲取元素報錯Error obtaining UI hierarchy](https://coding.imooc.com/learn/questiondetail/79733.html) | [用Appium進行android自動化測試](https://www.cnblogs.com/zoro-robin/p/5640557.html) | [卸載appium](https://www.jianshu.com/p/1873f90d7647) | [npm和cnpm(windows)安裝步驟](https://blog.csdn.net/wjnf012/article/details/80422313) | [Appium Windows 下使用 npm 安裝 Appium (詳)](https://testerhome.com/topics/13146) | [Appium 關於 appium 命令行端安裝的穩定版 nodejs 推薦](https://testerhome.com/topics/2661) | [Windows下安裝appium桌面版和命令行版](https://www.cnblogs.com/shenfei2031/p/10833897.html) | []()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM