先感慨一下真的心累啊,踩了好多坑,斷斷續續四天終於把環境徹底搭建完了,由於之前看的網上的帖子都不是很全而且還帶坑,決定自己寫一篇綜述,作為筆記。
一,首先是安裝需要的環境:
需要用到的軟件:
1. jdk-8u121-window(32位的就下載32位的,64位的就下載64位的)。
2.Android-sdk_r24.3.4-windows(下載這個adt-bundle-windows-x86-20140624)
3.Python:(V3.6也可以)
4.Node.js:node-v4.4.7-x64
5. appium:1.4.13.1
6.Appium-python-Client
7.pycharm
其中1-5是可以先下載的,6則需要在完成前面的五個步驟后才進行,7為可選Ide工具
1.1 JDK
jdk版本很重要,自己其實就是版本有問題才踩了很多坑,如果遇到報錯帶java的建議降低版本為1.7 有奇效。
千萬不要按1.9 版本。其次一定要按照鏈接的方式陪 :
https://jingyan.baidu.com/article/d45ad148ba5ab169552b80d3.html
按快捷鍵win+r,在運行內輸入cmd,並輸入Java,回車,如果出來的是些用法中文,那說明這是正確的,在接下來輸入javac,回車,如果出現些用法中文,說明是環境變量配好了。
1.2 下載SDK
下載這個adt-bundle-windows-x86-20140624(64位)
下載地址:
https://blog.csdn.net/gtkknd/article/details/39336825
安裝方法:
下載好后並進行解壓,然后開始配置三個變量:
1.解壓adt集成包到合適的路徑下面,比如D:\adt\
2.設置安卓環境變量
配置環境變量,
設置ANDROID_HOME系統變量為你的android SDK路徑,並把tools和platform-tools兩個目錄加入到系統的Path路徑里。
eg:添加變量名:ANDROID_HOME 變量值: D:\adt\sdk
並把這句添加到 %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools記得要加上";"
配置完環境后,可以在運行cmd后輸入 adb(能看到當前版本號),再輸入android-h(tools目錄下的,如果出來一堆文字則是可以的)
1.3 安裝python
進入官網或百度下載python下載好后安裝到所需安裝路徑,如在D盤中新建一個python文件夾,如d:\python34
安裝完成后將D:\python和D:\python\Scripts,添加到環境變量path下
打開cmd輸入python,出現版本號,然后輸入print("helloworld!")這樣python就是安裝好了。
1.4 安裝node.js
進入官網地址並下載:https://nodejs.org/en/download/
下載后一路傻瓜式安裝,安裝完成后,運行cmd,輸入node –v查看版本號,然后輸入npm
這里同樣注意版本 node-v4.4.7-x64
1.5 安裝appium服務端
node 版本不對建議直接卸載重新安裝
方法一:進入官網地址並下載
https://bitbucket.org/appium/appium.app/downloads/
完整安裝帶UI的appium,可以從官網直接下載dmg(mac)或者zip(Windows),運行里面的app即可。
appium安裝好后:
找到這個文件安裝目錄D:\appium\node_modules\.bin
將上面的地址添加到環境變量path下;
方法二:node.js包管理安裝
npm install -g appium
appium –v
npm install -g appium-doctor
appium-doctor
命令安裝的appium是控制台程序,沒有UI界面。可到github搜索appium的appiumDesktop項目中下載最新版本
但是由於GFW關系,此方法會在安裝過程中卡住或是直接報錯,解決辦法:掛VPN代理FQ;為了滿足國內開發人員的需要,淘寶npm鏡像cnpmjs.org可替代官方版本。打開輸入:
npm install -g appium --registry=https://registry.npm.taobao.org
方法三:百度pan
直接下載appium的GUI界面安裝包,下載地址:https://pan.baidu.com/s/1jGvAISu#list/path=%2F,Windows最新版本是AppiumForWindows_1.4.16.1.zip,MacOS最新版本是appium-1.5.3.dmg。筆者以windows為例,下載的AppiumForWindows_1.4.16.1.zip 進行解壓安裝,啟動appium,彈出錯誤提示框
很容易在網上查到錯誤原因,因為node.js需要.NETFramework框架的支持,所以在這里需要安裝net framework4.5。當.net framework 4.5安裝完成,再次啟動Appium,
打開appium
appium安裝好后:
找到這個文件安裝目錄D:\appium\node_modules\.bin
將上面的地址添加到環境變量path下;
Tips:檢查appium的所有需求環境
npm install -g appium-doctor
appium-doctor
打開cmd,輸入appium-doctor,檢查環境是否OK,出現allchecks were successful,說明環境OK;
1.6 appium-python-client
進入cmd 輸入:pip install Appium-Python-Client。通過Python安裝等待安裝完成。
如果從官方的資源庫下載Appium-Python-Client失敗,請自行更換下載源重新下載。在命令行輸入"pip install Appium-Python-Client -ihttp://pypi.douban.com/simple"重試
Tips:檢查selenium版本3.3.3
安裝 Appium-Python-Client 的同時會安裝一個selenium模塊.試着進入python3交互命令行,然后執行下面命令:
import selenium
selenium.__version__
如果你顯示的 selenium 版本是當前最新版本3.3.3的話,那么最好使用下面命令將版本裝成3.0.2,網傳某些Api的話會報錯。
pip3 install -I selenium==3.0.2
1.7 pycharm
安裝流程參考:http://www.jianshu.com/p/042324342bf4
需要激活可以購買正版或網上搜索激活碼。
二,實戰:
如果沒有遇到問題直接跳過1,2兩步,先打開夜神模擬器
1.夜神模擬器配置
>配置系統環境:在Path中添加C:\Programfile\Nox\bin; (夜神模擬器安裝的bin目錄)
然后進入這個目錄下,啟動cmd,輸入nox_adb.exe connect 127.0.0.1:62001(為了adb連接模擬器),可能會出現以下的情況,那就是因為你的adb版本和模擬器中的adb版本不同,而且環境變量配置有問題,所以保證環境變量按照上邊寫的配置好以后,看下邊圖1和圖2


>驗證問題描述情況:(驗證之前需要先配置環境變量,將SDK下的adb所在目錄(D:\Program Files\Android\adt-bundle-windows-x86\sdk\platform-tools)、以及夜神模擬器的adb所在目錄(D:\Program Files (x86)\nox\bin)加入了系統的環境變量path中)

>解決辦法:
a、關掉夜神模擬器。同時去任務管理器里看下,adb.exe以及nox_adb.exe這2個進程有沒有在運行?有的話就結束掉。
b、找到SDK的目錄和夜神模擬器的目錄,將SDK目錄下的adb.exe文件,復制到夜神模擬器的目錄下,因為夜神模擬器目錄下原本的adb文件名字叫做nox_adb.exe,因此復制過去之后也得改名為nox_adb.exe。
再次進入這個目錄下,啟動cmd,輸入 nox_adb.exe connect 127.0.0.1:62001,再繼續,輸入adb devices,看看是不是連接成功了?


遇到問題:
目前運行服務器端的adb版本(也就是夜神模擬器的adb版本)比客戶端的版本(也就是SDK目錄下的adb版本)低。
報錯信息如下:
adb server version(31) doesn’t match this client (36);killing…
解決辦法:
a、關掉夜神模擬器。同時去任務管理器里看下,adb.exe以及nox_adb.exe這2個進程有沒有在運行?有的話就結束掉。
b、找到SDK的目錄和夜神模擬器的目錄,將SDK目錄(C:\Program Files (x86)\Android\android-sdk\platform-tools)下的adb.exe文件,復制到夜神模擬器的目錄(C:\Program Files (x86)\Nox\bin)下,將夜神模擬器目錄下原本的adb.exe和nox_adb.exe修改文件名為adb_bak.exe和nox_adb_bak.exe,將從SDK目錄復制過來的adb.exe放在夜神目錄下,同時復制一份改名為nox_adb.exe。
3.啟動夜神模擬器
打開cmd命令行,進入夜神安裝目錄,執行如下命令:
cd D:\Program Files (x86)\nox\bin nox_adb.exe connect 127.0.0.1:62001
nox_adb是第二步修改的,沒有第二步可以直接執行adb.exe connect 127.0.0.1:62001
在cmd命令行中,輸入:adb devices查看
存在:127.0.0.1:62001 device
即為成功!
adb devices
4.安裝測試app
將測試app.apk安裝包拖到夜神模擬器即可安裝測試app。
5.運行與使用Appium
安裝完成桌面會生成一個紫色的appium 圖標,雙擊打開。
6.編寫appium自動化測試腳本
6.1.首先打開pycharm並寫好代碼,這里以淘寶APK作為測試Demo,淘寶APK我是放在電腦桌面(或者放置同代碼同個目錄下)。如下所示
from appium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time desired_caps = {} desired_caps['platformName'] = "Android" # 聲明是ios還是Android系統 desired_caps['platformVersion'] = '4.4.2' # Android內核版本號,可以在夜神模擬器設置中查看 desired_caps['deviceName'] = '127.0.0.1:62001' # 連接的設備名稱 desired_caps['appPackage'] = 'com.ss.android.ugc.aweme' # apk的包名 desired_caps['appActivity'] = 'com.ss.android.ugc.aweme.splash.SplashActivity' # apk的launcherActivity # desired_caps['appWaitActivity'] = 'com.ss.android.ugc.aweme.splash.SplashActivity' driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 建立 session time.sleep(5) print('+++++++') # 通過xpyth定位:find_element_by_xpath(“//android.widget.TextView[10]”) xpath下標從1開始,使用完整的classname # 通過text name:find_element_by_name(name對應uiautomator掃描后text的內容) # 通過id:find_element_by_id(id對應resource-id) # 通過classname定位:find_element_by_class_name(class_name對應class) # 通過accessibility id:find_element_by_accessibility_id(accessibility_id對應content-desc) # 定位到某個文本框,並輸入內容: # driver.find_element_by_id(“xxxxx”) .send_keys(“123456”) # 滑動屏幕: # 獲取屏幕尺寸 width=self.driver.get_window_size()[‘width’] height=self.driver.get_window_size()[‘height’] # 滑動屏幕 driver.swipe(width*9/10, height*1/2, width*1/10, height*1/2, 1000) # driver.find_element_by_id("************").click() # 點擊元素 # # driver.find_element_by_xpath("************").click() # 點擊元素 # # driver.find_element_by_xpath("************").send_keys(u'123456') # 發送鍵值 driver.quit() # 退出 session
其中查詢apk
其中|:driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps) #這個地址是怎么來的呢?,見appium設置項,如下圖所示

6.2.打開appium並點擊右上角三角符號,如下圖所示

6.3.運行pycharm代碼,並查看結果,如下圖所示(其實不會出錯,圖是網上找的):

遇到的坑1:在CMD指令中輸入appium,提示如下圖所示

遇到的坑2:運行appium提示error: Couldn't start Appium REST http interface listener. Requested port is already in use. Please make sure there's no other instance of Appium running already.
解決方式:因為端口被node占用,可以用如下退出node,找出PID命令::netstat -ano|findstr "7922" (這個4723是被占用的端口,我們需要先找該占用該端口程序的PID)。停止PID命令:taskkill /pid[進程碼] -t(結束該進程) -f(強制結束該進程以及所有子進程)。
坑3
三.綜述
官網:
https://github.com/appium/python-client
appium日志解析:
https://blog.csdn.net/qq_24126893/article/details/80314776
參考的網址:
https://blog.csdn.net/qq_16206535/article/details/79586818
https://www.jianshu.com/p/50eb9a88f4e2