1. 程式人生 > >python_Appium測試環境搭建

python_Appium測試環境搭建

contents clone 圖表 -- 輸入a 無法安裝 repo 宋體 left

Android環境搭建

移動端Appium環境部署比Web的selenium環境稍微復雜一些,如用python編寫測試用例腳本或者開發測試框架以及UI自動化操作方法是一樣的,基本是通用。因兩者都是基於selenium,在Python的appium包中實際繼承了Selenium,在測試過程中將移動端的頁面元素當作是網頁來處理。Web和Appium兩者區別在於環境部署和腳本部分配置差異。如果對Web的selenium自動化腳本有基礎的話,只要環境搭建及配置搞明白可以直接上手Appium移動端自動化測試。

由於網上的Appium部署的環境資料比較零散,不完整,自己總結搭建的appium環境從0到1完整部署過程記錄。

一、環境準備:

本文講解的環境在windows7系統64位版本進行部署。

需要安裝的工具清單如下:

1.jdk1.8.0 (64位)

2.android-sdk_r24.4.1-windows (下載地址:http://tools.android-studio.org/index.php/sdk)

3.python:3.6 (下載地址:https://www.python.org/)

4..net framework4.5 (下載地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=30653)

5.Node.js:node-v10.14.2-x64 (下載地址:https://nodejs.org/en/download)

6.appium-desktop :1.10.0 (下載地址:https://github.com/appium/appium-desktop/releases)

7.Appium-Python-Client:1.10.1

8.夜神摸擬器:6.2.6.3

二、安裝jdk

1、在系統環境變量,新增JAVA_HOME為jdk安裝路徑:D:\Java\jdk1.8.0_181
2、在Path變量中增加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
3、在CLASSPATH變量中增加:%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

三、安裝android-sdk

將下載的 Android SDK 解壓指定的目錄

在系統變量新建:ANDROID_HOME,對應變量值為:D:\android-sdk(sdk安裝路徑)

path變量裏面添加%ANDROID_HOME%\tools和%ANDROID_HOME%\platform-tools;

註意:

由於目前Google在國內無法訪問,所以需要通過鏡像方式去下載我們的SDK,就碰到android sdk解壓後沒有platform-tools目錄,或者安裝SDK時遇到"Done loading packages"的問題。

1、進入Android SDK安裝目錄中點擊SDK Manager.exe,然後選擇Tools->options菜單,彈出如下界面:

技術分享圖片

錄入如下數據:【本人親測該URL地址鏡像服務器可用】

Proxy Server:mirrors.neusoft.edu.cn

Proxy Port:80

並勾選Others框內的第一個復選框,如上圖紅色圈。

2、列出Android SDK在線更新鏡像服務器

  • 中國科學院開源協會鏡像站地址:
    • http://mirrors.opencas.cn 端口:80
    • http://mirrors.opencas.org 端口:80
    • http://mirrors.opencas.ac.cn 端口:80
  • 上海GDG鏡像服務器地址:
    • http://sdk.gdgshanghai.com 端口:8000
  • 北京化工大學鏡像服務器地址:
    • http://ubuntu.buct.edu.cn/ 端口:80
    • http://ubuntu.buct.cn/ 端口:80
    • http://ubuntu.buct6.edu.cn/ 端口:80
  • 大連東軟信息學院鏡像服務器地址:
    • http://mirrors.neusoft.edu.cn 端口:80
  • 騰訊Bugly 鏡像:
    • http://android-mirror.bugly.qq.com 端口:8080

3、完成代理設置後再次打開SDK Manager.exe,即可更新及安裝我們的SDK了。

接下來勾選需要下載的android版本和工具,如下圖所示:

技術分享圖片

如上圖Tools的紅色圈內必須要勾選安裝,下載安裝完後,Status狀態下會出現Installed表示已安裝。

技術分享圖片

本文選擇的是android 6.0版本,如上圖。

技術分享圖片

Extras下Android Support Repository是android系統的兼容庫,必須安裝,Google USB Driver也安裝。

勾選完後,單擊右下角install package按鈕,安裝更新全部內容大概要2小時左右的時間,請耐心等待!

三、安裝python

本文選擇3.6版本安裝完後,進行環境變量配置,指定安裝路徑目錄即可。

在系統變量的path變量新增:D:\Programs\Python\Python36;D:\Programs\Python\Python36\Scripts

四、安裝.net framework4.5

安裝appium之前,先安裝.net framework4.5工具,否則安裝appium會報錯,直接傻瓜式安裝即可。

五、安裝Node.js

安裝appium之前,需要安裝Node工具,傻瓜式安裝完後,在cmd窗口錄入node -v查看版本號。

六、安裝appium-desktop

由於AppiumForWindows一直沒更新版本,版本過低,對android系統高版本不支持。由appium-desktop替代。

安裝appium-desktop桌面版比較簡單,直接傻瓜式安裝即可,安裝完後桌面出現appium圖標,點擊打開如下圖:

技術分享圖片

如下命令行版本安裝:

1、安裝appium 【可安裝,也可不安裝,前面已安裝有appium-desktop桌面版】
npm --registry http://registry.npm.taobao.org install appium -g
驗證:cmd輸入appium

2、安裝appium-doctor檢測環境
npm --registry http://registry.npm.taobao.org install appium-doctor -g
驗證:cmd輸入appium-doctor

技術分享圖片

七、安裝Appium-Python-Client

直接在cmd窗口輸入pip3 install Appium-Python-Client安裝即可,這個工具是用來能夠在客戶端編寫python腳本去實現操作android系統的APP測試。

八、安裝夜神摸擬器

直接傻瓜式安裝即可,安裝完後,可以直接在夜神摸擬器自帶的夜神應用中心HD,搜索需要下載安裝APP軟件,或者也可以網上下載的apk包文件直接拖到夜神摸擬器窗口就可以實現自動安裝app軟件。如下圖所示:

技術分享圖片

到此為止,所有的該要安裝工具都安裝完後,接下來就可以配置,調試跑通起來。

Android環境配置調試

1、連接夜神摸擬器前,先在cmd窗口檢測環境sdk和夜神摸擬器版本號是否一致性。否則會報錯如下信息:
adb server version(36) doesn’t match this client (40);killing…

  • 在cmd窗口輸入adb查看版本號
  • 在cmd窗口進入夜神安裝目錄下D:\Program Files\Nox\bin輸入命令:nox_adb.exe connect 127.0.0.1:62001

如夜神版本比SDK的adb的版本號低的話,如下解決辦法:

a、關掉夜神模擬器。同時去任務管理器裏看下,adb.exe以及nox_adb.exe這2個進程有沒有在運行?有的話就結束掉。
b、找到SDK的目錄和夜神模擬器的目錄,將夜神模擬器目錄下原本的adb.exe和nox_adb.exe修改文件名為adb_bak.exe和nox_adb_bak.exe,將SDK目錄(D:\android-sdk\platform-tools)下的adb.exe文件復制到夜神模擬器的目錄(D:\Program Files\Nox\bin)下,將從SDK目錄復制過來的adb.exe放在夜神目錄下,同時復制一份改名為nox_adb.exe。

最後在cmd窗口進入夜神安裝目錄下D:\Program Files\Nox\bin輸入命令:nox_adb.exe connect 127.0.0.1:62001後,查看連接信息如下:

技術分享圖片

如上圖表示已經成功連接到夜神摸擬器。

2、點擊電腦桌面appium圖標啟動,點擊Start Server按鈕啟動appium服務。如下圖所示:

技術分享圖片

點擊放大鏡按鈕進入appium配置數據如下圖所示:

技術分享圖片

  • platformName :Android 【這裏是Android環境】
  • platformVersion:4.4.2 【在cmd窗口輸入命令:adb shell getprop ro.build.version.release查看版本或者在夜神摸擬器系統信息菜單查看版本號】
  • deviceName:驅動名稱 【在cmd窗口輸入命令:adb devices查看名稱】
  • appPackage:包名 【在cmd窗口輸入命令:aapt dump badging D:\test\taobao.apk(網上下載的taobao.apk文件)】
  • appActivity:啟動棧 【在cmd窗口輸入命令:aapt dump badging D:\test\taobao.apk(網上下載的taobao.apk文件)】

在D:\android-sdk\build-tools\28.0.3目錄下的cmd窗口輸入aapt dump badging D:\test\taobao.apk命令後,可以找到如下信息。

package: name=‘com.taobao.taobao‘
launchable-activity: name=‘com.taobao.tao.welcom.Welcom‘

查找appPackage和appActivity方法有好多種,選其中一個方法就行了。還可下載的查看包名的apk工具拖到夜神摸擬器窗口安裝後,可直接用查看包名工具來查看模擬器已安裝所有的APP包名清單,如下圖所示:

技術分享圖片

點擊appium界面的右下角“Start Session"打開如下界面,就可以看到連接到夜神摸擬器啟動打開淘寶APP軟件主界面,就可以定位元素控件寫測試腳本了。

技術分享圖片

如上圖appium自帶的可定位元素屬性,值。另一種方法可用sdk自帶的工具D:\android-sdk\tools目錄下uiautomatorviewer.bat文件來定位元素,查看屬性,值。打開後彈如下界面:

技術分享圖片

3、接下來就可以編寫測試腳本調試是否能跑通,如下圖所示:

方法一,使用appium工具定位元素:

技術分享圖片

技術分享圖片

方法二,使用SDK自帶的uiautomatorviewer工具定位元素如下圖所示,前提條件必須關閉appium,否則會報錯獲取不到當前摸擬器的圖像。

技術分享圖片

通過以上可知控件的元素,就可以編寫測試腳本,如下圖所示:

技術分享圖片

需要先啟動appium服務,然後執行測試腳本,可通過夜神摸擬器查看當前自動化運行的淘寶APP界面操作測試。如果需要測試真機的話,將手機和電腦通過USB數據線連接,手機打開USB調試模式,USB的連接方式要選擇設備文件管理選項。

然後在cmd窗口輸入adb devices查看是否連接成功並獲取到驅動名。最後在測試腳本的驅動名稱改為當前真機驅動名稱,再執行測試腳本即可實現在真機跑。

IOS環境搭建

本文介紹搭建IOS的摸擬器和真機的appium環境,部署過程中各種報錯遇到不少坑,關鍵xcode和ios系統、appium版本三者要對應起來,否則安裝部署大多數是版本問題。如果在項目測試的話,最好在IOS系統電腦搭建IOS和android兩套環境,這樣一臺機子就搞定了,在IOS搭建的android跟windows方法差不多,這裏重點講搭建IOS的appium環境。

一、環境準備:

需要安裝的工具清單如下:

1.jdk11.0.2 (64位)

2.xcode:10.1 (下載對應的MACOS系統版本:https://developer.apple.com/download/more/)

3.python:3.6 (下載地址:https://www.python.org/)

4.macOS:10.14.3

5.Node.js:node-v10.15.1-x64 (下載地址:https://nodejs.org/en/download)

6.appium-desktop :1.8.2 (下載地址:https://github.com/appium/appium-desktop/releases)

7.Appium-Python-Client

  • java安裝

先進入根目錄輸入vim ~/.bash_profile
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home
export JAVA_HOME

export PATH=${JAVA_HOME}/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

重新引入生效:source ~/.bash_profile
查看更改後的JAVA_HOME路徑:echo $JAVA_HOME

  • brew安裝

brew是mac上一個軟件管理工具,通過它可以在終端輸入命令安裝各種軟件包
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
檢查homebrew是否安裝:brew -v

  • 檢查git是否安裝

$ git --version
git version 2.19.0

  • 安裝carthage

brew install carthage
驗證:carthage version,查看版本

  • 安裝 libimobiledevice (真機測試必裝)【(查看當前連接此電腦的設備中的信息、log,調試設備,git submodules的依賴,

brew install -HEAD libimobiledevice
驗證:將真機連接在mac上,命令行輸入idevice_id -l,如果出現該設備的udid,則說明配置成功能夠正常識別了。

查看真機的設備名字:idevicename -d
查看所有的模擬器和真機:instruments -s devices

  • 安裝 iOS-deploy (真機測試需要)【可以用來安裝卸載ios應用,iOS10,真機必裝】

brew install ios-deploy

  • 安裝xcode

從App Store獲取xcode的工具並安裝

  • 安裝node.js

直接官網下載安裝

  • 安裝Appium-Python-Client

pip3 install Appium-Python-Client

  • 安裝appium-doctor

npm install -g appium-doctor
使用appium-doctor 檢查Appium iOS環境環境:appium-doctor --ios
如果出現opencv4nodejs、fbsimctl、applesimutils、ffmpeg、ios-webkit-debug-proxy失敗信息,可通過如下手動安裝即可:
安裝ffmpeg
brew install ffmpeg
brew tap facebook/fb and brew install fbsimctl --HEAD

安裝ios-webkit-debug-proxy
brew install ios-webkit-debug-proxy

安裝opencv4nodejs:
使用npm代替brew:
brew install cmake
npm install -g opencv4nodejs

安裝fbsimctl:
brew tap facebook/fb
brew install fbsimctl

安裝applesimutil:
brew tap wix/brew
brew install applesimutil

二、Appium環境安裝:

安裝WebDriverAgent(WDA)
如果是模擬器測試,不需要安裝WDA,如果用真機一定要安裝WDA
前提:電腦必須安裝了Carthage
註意,由於appium安裝目錄下自帶的WebDriverAgent有BUG問題,需要從網上下載最新版本執行腳本。

先進到用戶目錄下:

cd ~

git clone https://github.com/facebook/WebDriverAgent.git

cd WebDriverAgent

mkdir -p Resources/WebDriverAgent.bundle

sh ./Scripts/bootstrap.sh
然後進入appium-xcuitest-driver所在文件目錄下:
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver下把自帶的WebDriverAgent目錄重命名為WebDriverAgent_bak。 執行命令:ln -s ~/WebDriverAgent WebDriverAgent (其中~/WebDriverAgent是源地址,後面的是目標地址) 、編譯WebDriverAgent 進入目標文件/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent,雙擊WebDriverAgent.xcodeproj工程文件。 1、編譯WebDriverAgentLib 技術分享圖片 2、編譯WebDriverAgenRunner 技術分享圖片 3、App ID要保持一致性。 技術分享圖片

進入WebDriverAgent 文件夾:cd /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent

執行命令:xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination ‘id=真機的udid‘ test

如果終端出現以下信息,表示編譯 OK

Testing failed:

    Early unexpected exit, operation never finished bootstrapping - no restart will be attempted
** TEST FAILED *

這個時候iphone多了一個WebDriverAgentRunner的app,如下圖所示:

技術分享圖片

在手機通用-》描述文件設置信任證書,終端再重新執行xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination ‘id=真機的udid‘ test進行驗證環境。
驗證一下WDA是否運行成功,因為有些國產的iPhone設備通過手機的IP和端口還不能訪問,此時需要將手機的端口轉發到Mac上,終端輸入:iproxy 8100 8100進行端口轉發。
瀏覽器輸入:http://localhost:8100/status,返回一串json即證明成功

真機命令行啟動wda:
控制臺切換到wda的文件夾目錄下,運行:/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id=(你的id) USE_PORT=8100 test(id填你自己的uid)
執行:iproxy 8100 8100

摸擬器的命令行啟動wda:

控制臺運行:/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id=A2C61397-E627-422E-87D3-8745C3E4F927 USE_PORT=8100 test(id填使用的模擬器uid)
到此為止,真機環境搭建完成,接下來就是可以配置appium信息,寫測試腳本跑自動化了。

四、安裝IOS摸擬器
打開已經安裝好的xcode(位於/Applactions/Xcode),如圖
技術分享圖片
選擇Create a new Xcode project,按下圖操作:
技術分享圖片
技術分享圖片

技術分享圖片

選擇摸擬器:
技術分享圖片

如果需要其它,還可點擊Add Additional Simulators下載摸擬器版本。
最後,點擊左側三角形運行,出現打開摸擬器,會多出test的app圖標,如下圖:
技術分享圖片

如查看udid方法如下圖左邊的Devices是查看真機,右邊的Simulators是查看摸擬器信息。還可通過命令instruments -s devices查看所有的真機和摸擬器。
技術分享圖片

備註:在真機上是安裝.ipa的包,在模擬器上是安裝.app的包。

這是兩種不同的打包方法,也就是說從appstore這種渠道下載的.ipa是無法安裝到模擬器上的,必須要找你們開發專門針對iOS模擬器打個模擬器的包,後綴是.app 。

、APPiumDesktop的環境真機和摸擬器參數配置

a、在真機上測試時,需要在AppiumDesktop新增udid、xcodeOrgld和xcodeSigningld等字段屬性。xcodeOrgld是指開發者賬號id,可在https://developer.apple.com/account的左側的Memeber ship找到,或者在xcode賬號管理裏。

如下圖參考:

技術分享圖片

b、摸擬器配置如下圖所示:

技術分享圖片

備註:如上圖真機和摸擬器已經有安裝好的被測app軟件,可把參數app屬性改為bundleId,此項相當於android的裏面的app包名。如果想看app的bundleId,只需要安裝了ideviceinstaller工具就可以了,然後執行 ideviceinstaller -l 就可以將手機安裝的app列出。

如下圖公用的Capability參數:

技術分享圖片

其它更多的參數參考請進入:https://blog.csdn.net/ljl6158999/article/details/80594521

、APPium代碼啟動

參考如下圖啟動摸擬器執行用例腳本自動化測試示例代碼:

技術分享圖片

Appium工作原理

1、appium是基於webdriver 協議,appium ios封裝了apple的Instruments框架,用了裏面的UIAutomation,Client是我們編寫的 webdriver腳本,中間是appium啟動server(默認監聽 4723 端口 ),appium server調用instruments.js啟動一個 socket server ,同時分出一個子進程運行instruments.app 將bootstrap.js(一個 UIAutomation 腳本)註入到 devices用於和外界進行交 ,最後 Bootstrap.js將執行的結果返回給appium server, appium server再將結果返回給appium client 。

技術分享圖片

2、appium使用的是UIAutomator框架,我們在client客戶端編寫測試腳本運行,調用的是webdriver接口,appium server接收到我們client發送過來的命令去調用UIAutomator,把命令轉換後去實現,Bootstrap將執行的結果返回給appium server ,最後由Appium server再將結果返回給client端。

技術分享圖片

python_Appium測試環境搭建