1.安裝Xcode。
2.安裝Homebrew,它是一個macOS上的軟件包管理工具,便於下載軟件包。
打開終端,運行:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
3.安裝Nodejs和npm:
brew install npm
運行node -v和npm -v確保安裝成功。
4.安裝cnpm。由於npm源在國外,使用npm安裝庫時會比較慢,可以使用taobao的鏡像源:
npm install -g cnpm --registry=https://registry.npm.taobao.org
5.安裝Appium依賴庫libimobiledevice,如果沒有安裝會導致Appium無法連接到iOS的設備,所以必須要安裝:
brew install libimobiledevice --HEAD
6.如果要在iOS10+的系統上使用Appium,需要安裝ios-deploy:
npm install -g ios-deploy
7.對真機需要安裝xcpretty:
gem install xcpretty
8./安裝carthage:
brew install carthage
9.安裝appium-doctor:
npm install appium-doctor -g
再進行環境檢測:
appium-doctor --ios
有沒裝好的包就用brew install安裝;直到appium-doctor --ios環境檢測全部必裝環境都配置好就可以安裝Appium了:
10.安裝Appium:
cnpm install -g appium
11.下載並編譯webDriverAgent:
- 從github上下載代碼:
git clone https://github.com/facebook/WebDriverAgent
- 運行./Scripts/bootstrap.sh:該腳本會使用Carthage下載所有的依賴,使用npm打包響應的js文件。執行完成後,直接雙擊打開WebDriverAgent.xcodeproj這個文件準備編譯WebDriverAgent,編譯時要進行簽名,要向ios開發人員要一個開發者賬號(具體操作是ios開發人員幫忙操作的),接下來的配置參考:https://www.cnblogs.com/xiyuan2016/p/7593211.html。run這個項目的時候要注意在手機設置-通用-描述文件與設備管理中信任WebDriverAgentRunner
Appium設備端:
iOS 真機,手機上會多一個名爲WebDriverAgentRunner 的應用,這個應用的作用就是對你的目標 App 進行測試。它能根據被測試應用的BundleID 將它喚起,然後自己進入死循環保證測試用例一直不退出。此時等待服務器傳來 URL 數據,然後解析 URL,分發到對應模塊,各個模塊根據 URL 指令執行對應的測試操作,最終再把測試結果返回。
Appium 服務端:
是一個Node.js 應用,這個應用跑在電腦上,用於和 WDA 進行通信。採用的是WebDriver 協議。
Appium 客戶端:
我們的代碼。
PS:在Mac電腦上連接真機iPhone,運行WebDriverAgentRunner會在Mac端啓動WDA服務器,並在手機iPhone端安裝一個WebDriverAgentRunner應用。通過編寫腳本來與WDA服務器通信,告訴WDA服務器想要如何操作iPhone,WDA服務器與安裝在手機iPhone端的WebDriverAgentRunner應用通信並通過該app發送模擬指令來實現操作iPhone手機(https://www.cnblogs.com/LanTianYou/p/10205499.html)
WebDriverAgent安裝一次就可以了。如果被刪掉是因爲沒有在iOS設置-通用-描述文件與設備管理中點擊信任。
https://github.com/google/ios-webkit-debug-proxy/blob/master/README.md
遇到的問題:
1.Not cleaning generated files. Add clearSystem Files
capability if wanted.
desiredCapabilities.setCapability('clearSystemFiles',' true');
2.Keyboard is not present
分機型自定義鍵盤
- 點擊 tap(原來的tap方法 appium升級後不適用了)
self.driver.execute_script("mobile: tap", {"x": 22, "y": 579})
# self.driver.tap([(key_position_x['a'], key_position_y['a'])])
3.sleep大於5s時會斷開連接,不知道爲什麼??????可能是selenium的問題
4. xpath ios 定位長達14秒?????
5.
有些控件是滿足條件後纔給顯示,比如登錄後可見,所以visible的默認值false,inspector一直會取此控件或者父控件的默認值?
visible爲false導致click不可用 目前只能座標縮放點擊適配所有型號手機
都是因爲h5頁面獲取不到,要找開發把手機udid配進配置文件裏。。。