本文參考:
乙醇的blog
蟲師的blog
appium一些錯誤和解決辦法
搭建環(huán)境
安裝Nodejs
- 點這里在官網(wǎng)下載nodejs安裝包
- 安裝nodejs
- 驗證安裝是否成功:打開cmd,輸入
npm
安裝Appium
- 點這里下載AppiumForWindows安裝包。
- 解壓并安裝Appium
- 安裝Appium時,可能會提示缺少
.net framework
,建議在微軟官網(wǎng)上安裝對應(yīng)的或者最新的.net framework
- 設(shè)置Appium環(huán)境變量
- 在系統(tǒng)變量
path
中,加入值:;your\appium\path\node_modules\.bin
- 啟動Appium,確認(rèn)是否能正常啟動。
安裝java環(huán)境
- 點這里在官網(wǎng)下載JDK的安裝包。
- 安裝JDK,注意記錄jdk的安裝目錄,下面設(shè)置環(huán)境變量需要。
- 設(shè)置java環(huán)境變量
- 新建系統(tǒng)變量:
JAVA_HOME
,對應(yīng)的值為:your\jdk\setup\path
- 新建系統(tǒng)變量:
CALSS_PATH
,對應(yīng)的值為:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
- 在系統(tǒng)變量
path
中,加入值:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
- 驗證環(huán)境變量:打開cmd,分別輸入
java
和javac
安裝Android環(huán)境
確保電腦可以翻墻
以API Level 19(Android 4.4.2)為例
- 點這里在官網(wǎng)下載Android Studio安裝包。
- 安裝Android Studio。注意記錄android sdk的目錄(通常應(yīng)該是
C:\Users\your_user\AppData\Local\Android\sdk
),下面設(shè)置環(huán)境變量需要。 - 配置SDK Manager
- 打開Android Studio
- 歡迎頁面中顯示右下的
configure
- 點擊
SDK Manager
,打開SDK Manager - 在Android SDK->SDK Platforms中,勾選上
Show Package Details
- 找到API Level 19(Android 4.4.2)
- 確認(rèn)下面的內(nèi)容都被勾選,點擊右下
applay
。如果都已經(jīng)安裝,則不需要做任何操作,如果有未安裝的內(nèi)容,SDK Manager會提示,同時自動下載并安裝Not Installed
的內(nèi)容
- 配置SDK Tools
- 在Android SDK->SDK Tools中,勾選上
Show Package Details
- 確認(rèn)勾選
Android SDK Build-Tools
下與API 19有關(guān)的內(nèi)容(以防萬一,全選也應(yīng)該關(guān)系) - 確認(rèn)勾選
Android SDK Platform-Tools
- 確認(rèn)勾選
Android SDK Tools
- 確認(rèn)勾選
Android Emulator
- 可能還有其它的也被勾選,保持不變
- 點擊右下
applay
。如果都已經(jīng)安裝,則不需要做任何操作,如果有未安裝的內(nèi)容,SDK Manager會提示,同時自動下載并安裝Not Installed
的內(nèi)容。
- 設(shè)置android環(huán)境變量
- 新建系統(tǒng)變量:
ANDROID_HOME
,對應(yīng)的值為:your\android\sdk\path
- 在系統(tǒng)變量
path
中,加入值:;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;
- 打開cmd,輸入
appium-doctor
,檢查環(huán)境。
如果看到
All Checks were successful
,說明到這一步,一切還是順利的。
創(chuàng)建Android模擬器
以API Level 19(Android 4.4.2)為例
- 打開Android Studio
- 創(chuàng)建一個新項目
- 點擊
Tools->Android->AVD Manager
- 點擊
Create
- 選擇一個屏幕尺寸,next
- 在x86 Images中選擇API Level 19,第一次可能需要下載。next
- 確認(rèn)配置,finish
- 然后就可以啟動模擬器了。
到這一步,安卓模擬器運行的環(huán)境就算搭建完了。
安裝ruby的Appium庫
官網(wǎng)文檔點這里
可能還需要安裝selenium-webdriver的gem
gem update --system
gem update bundler
gem uninstall -aIx appium_lib
gem install --no-rdoc --no-ri appium_lib
運行
啟動安卓模擬器
- 打開AVD Manager
- 選擇之前創(chuàng)建的模擬器(以API Level 19為例)
- 啟動
配置Appium
- 打開Appium
- 點擊左上的安卓圖標(biāo),打開setting頁面
- 確認(rèn)Platform Name是Android
- 確認(rèn)Automation Name是Appium
- 確認(rèn)PlatformVersion是API Level 19
- 點右上的運行圖標(biāo),運行Appium
運行腳本
以下是demo script
require 'appium_lib'
caps = { caps: { platformName: 'Android', appActivity: '.Calculator', appPackage: 'com.android.calculator2',deviceName:'Android Emulator' },
appium_lib: { sauce_username: nil, sauce_access_key: nil } }
driver = Appium::Driver.new(caps).start_driver
driver.find_element(name: '1').click
driver.find_element(name: '5').click
driver.find_element(name: '9').click
driver.find_element(name: 'delete').click
driver.find_element(name: '7').click
driver.find_element(name: '4').click
driver.find_element(name: '+').click
driver.find_element(name: '2').click
driver.find_element(name: '0').click
driver.find_element(id: 'com.android.calculator2:id/minus').click
driver.find_element(id: 'com.android.calculator2:id/digit8').click
driver.find_element(id: 'com.android.calculator2:id/digit8').click
driver.find_element(id: 'com.android.calculator2:id/digit3').click
driver.find_element(id: 'com.android.calculator2:id/equal').click
運行該腳本即可
到這一步,算是成功了。
一些可能會用到的工具
uiautomatorviewer.bat
- 位置在
your\android\sdk\path\tools\bin
下 - 這個工具可以查看手機界面中控件的屬性,包括name、id、class等,可以方便定位控件。
如果啟動該工具出現(xiàn)Unable to connect to adb. Check if adb is installed correctly
錯誤,打開uiautomatorviewer.bat,找到uiautomatorviewer.bat文件最后一行:
call "%java_exe%" "-Djava.ext.dirs=%javaextdirs%" "-Dcom.android.uiautomator.bindir=%prog_dir%" -jar %jarpath% %*
將其中的binddir=%prog_dir%
修改為SDK的platform-tools所在路徑。
monitor.bat
- 位置在
your\android\sdk\path\tools\
下 - 這個工具可以查看log以及其它的一些信息
- 建議先啟動該工具后,再啟動模擬器
一些可能會遇到問題
- 運行appium腳本出現(xiàn)
Requested a new session but one was in progress
- 重新停止appium服務(wù),開啟Appium服務(wù)
- 在Genarel Setting中設(shè)置成覆蓋Session,重啟Appium服務(wù)
以防萬一,在腳本中,保證運行一次driver.quit
- 打開Android Device Monitor后,Device offline
- 重啟手機或者模擬器
- 重新接入手機usb