MAC自動化環境搭建

UI自動化環境搭建html

第一階段:配置appium環境
硬件配置
mac系統電腦

java環境
sunjiedeMacBook-Air:~ vicent$ java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)java

brew
sunjiedeMacBook-Air:~ vicent$ brew -v
Homebrew 1.2.3
Homebrew/homebrew-core (git revision aa923; last commit 2017-06-23)node

安裝node:brew install node
安裝appium:npm install –g appium
安裝xcode、android sdk
建立bash_profile文件
touch .bash_profile
vi .bash_profile
打開bash_profile文件配置ANDROID_HOME和JAVA_HOME
export ANDROID_HOME="/Users/guowenxie/Documents/adt-bundle-mac-x86_64-20140702/sdk" 填寫你本身的地址
export JAVA_HOME=$(/usr/libexec/java_home)
source .bash_profileandroid

第二階段:獲取控件定位
一、安裝app-inspector
  a)先安裝macaca
    卸載原有的macaca: 
      一、npm uninstall macaca-cli -g
      二、npm cache clean
    安裝:npm install macaca-cli -g
    安裝完成後,檢查環境是否正常,終端輸入:macaca doctor
    只要所有顯示爲綠色爲環境正常,若不正常,哪項顯示爲紅色相應的解決,能夠網上找一下資料,仍是挺全的
  b)安裝brew:ruby -e "$(curl –fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  c)安裝ios-webkit-debug-proxy:brew install ios-webkit-debug-proxy
  d)安裝macaca-ios:npm i macaca-ios -g
  e) Macaca iOS 驅動調整爲 USB 通訊:brew install usbmuxd
  f)安裝app-inspector
    卸載原有的app-inspector: 
      一、npm uninstall app-inspector -g
      二、npm cache clean
    安裝:npm i app-inspector -g
    安裝成功後在終端中輸入:
      >>>cd /usr/local/lib/node_modules/app-inspector/node_modules/webdriveragent/WebDriverAgent
      >>>mkdir -p Resources/WebDriverAgent.bundle
      >>>sh ./Scripts/bootstrap.sh -d
      若在執行以上3句命令行報錯說找不到某些目錄時的解決辦法:ios

前往:https://github.com/facebook/WebDriverAgent 打包下載源碼;
複製源碼中【WebDriverAgentTests文件夾】、【Scripts文件夾】、【Cartfile文件】、【Cartfile.resolved文件】
粘貼到/usr/local/lib/node_modules/app-inspector/node_modules/webdriveragent/WebDriverAgent 目錄下
從新執行以上3句命令行
  g)安裝ios-deploy:brew install ios-deploygit

二、:xcode打開app-inspector中的WebDriverAgent工程:
  路徑爲:/usr/local/lib/node_modules/app-inspector/node_modules/.1.0.41@webdriveragent/WebDriverAgent/WebDriverAgent.xcodeproj
  1) 從新編繹WebDriverAgentLib:
    修改:Bundle id,添加Team,選擇WebDriverAgentLib並編輯(以下面3張圖)
   
  github


  
  
  2)如以上步驟從新編繹WebDriverAgentRunner
   
  
  3)選擇WebDriverAgentUSBClient並編繹
   

  4)按照步驟1)中修改:Bundle id,添加Team,從新編繹IntegrationApp,可是須要添加一步修改Product Name爲: WebDriverAgentRunner-Runner
   
  
  此時選中IntegrationApp並編繹時,可能會報錯:找不到info.plist (這個是由於工程中缺乏一個目錄文件:WebDriverAgentTests)
  解決辦法:進入appium的安裝路徑中WebDriverAgent工程(/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/)中拷備該目錄文件放到app-inspectorWebDriverAgent工程中
  再次編繹,若報錯新問題: Main storyboard file base name 相關的問題的問題
解決辦法:進入IntegrationApp>info>Custom iOS Target Properties中刪除Main storyboard file base name的配置

若遇到其它問題,繼續解決,直到能夠正確編繹爲止
  建議:UnitTests、IntegrationTests 也如1)修改:Bundle id,添加Team,操做後最後再編繹 IntegrationApp
三、打開終端,輸入 :macaca server --verbose
  出現如下內容 
sunjiedeMacBook-Air:~ vicent$ macaca server --verboseweb

************************************
* version 2.0.3 is outdate *
* run: npm i -g macaca-cli@2.0.4 *
************************************npm

More information: https://macacajs.github.io/changelog.htmlbootstrap

>> index.js:18:12 [master] pid:3450 webdriver server start with config:
{ port: 3456,
verbose: true,
always: true,
ip: '10.11.18.157',
host: 'sunjiedeMacBook-Air.local',
loaded_time: '2017-06-26 13:51:12' }
>> middlewares.js:17:10 [master] pid:3450 base middlewares attached
>> router.js:127:10 [master] pid:3450 router set
>> webdriver sdk launched

四、打開終端,輸入:app-inspector -u 真機設備UDID --verbose
  運行過程當中會在手機上安裝WebDriverAgent的APP(記得要去信任證書才行,若第一次失敗了,信任證書後從新執行終端命令)並啓動,稍等一下子會被置入後臺,此時會自動打開一個網頁,此時就會顯示出當前的設備UI界面
sunjiedeMacBook-Air:~ vicent$ app-inspector -u 95fe7916c490ffc58b7c3ff95e2642009ab0f1ef --verbose

***************************************
* version 2.0.3 is outdate *
* run: npm i -g app-inspector@2.0.6 *
***************************************

>> server.js:16:12 [master] pid:3493 server start with config:
{ port: 5678,
verbose: true,
udid: '95fe7916c490ffc58b7c3ff95e2642009ab0f1ef',
ip: '10.11.18.157',
host: 'sunjiedeMacBook-Air.local',
loaded_time: '2017-06-26 13:53:12' }
>> app-inspector.js:43:12 [master] pid:3493 server start at: http://10.11.18.157:5678
>> xctest-client.js:52:14 [master] pid:3493 project path: /usr/local/lib/node_modules/app-inspector/node_modules/xctestwd/XCTestWD/XCTestWD.xcodeproj
>> xctestwd start with port: 8001
>> xctest-client.js:224:14 [master] pid:3493 xcode version: 8.3.2
>> XCTestWD version: 1.0.31
>> xctest-client.js:172:14 [master] pid:3493 2017-06-26 13:53:14.414 xcodebuild[3499:285075] IDETestOperationsObserverDebug: Writing diagnostic log for test session to:
/Users/vicent/Library/Developer/Xcode/DerivedData/XCTestWD-evljajykmolwzobrozpobiggeeea/Logs/Test/E7D94522-B4BE-4053-AB67-DA5E0F1763B2/Session-XCTestWDUITests-2017-06-26_135314-wX8vjB.log

>> xctest-client.js:173:14 [master] pid:3493 please check project: /usr/local/lib/node_modules/app-inspector/node_modules/xctestwd/XCTestWD/XCTestWD.xcodeproj
>> xctest-client.js:172:14 [master] pid:3493 2017-06-26 13:53:14.415 xcodebuild[3499:285021] [MT] IDETestOperationsObserverDebug: (579558DA-9AA1-4CE5-9D5F-7088803FDE27) Beginning test session XCTestWDUITests-579558DA-9AA1-4CE5-9D5F-7088803FDE27 at 2017-06-26 13:53:14.414 with Xcode 8E2002 on target <DVTiOSDevice: 0x7f933a858580> {
deviceSerialNumber: C76R89ZHGRYD
identifier: 95fe7916c490ffc58b7c3ff95e2642009ab0f1ef
deviceClass: iPhone
deviceName: VincePhone
deviceIdentifier: 95fe7916c490ffc58b7c3ff95e2642009ab0f1ef
productVersion: 10.3.2
buildVersion: 14F89
deviceSoftwareVersion: 10.3.2 (14F89)
deviceArchitecture: arm64
deviceTotalCapacity: 60253212672
deviceAvailableCapacity: 22598217728
deviceIsTransient: NO
ignored: NO
deviceIsBusy: NO
deviceIsActivated: YES
deviceActivationState: Activated
isPasscodeLocked: YES
deviceType: <DVTDeviceType:0x7f933a65fb30 Xcode.DeviceType.iPhone>
supportedDeviceFamilies: (
1
)
applications: (null)
provisioningProfiles: (null)
activityProgress: -2
activityTitle: 
hasInternalSupport: NO
isSupportedOS: YES
developerDiskMountError: (null)
(null)
bootArgs: <unavailable>
} (10.3.2 (14F89))

>> xctest-client.js:173:14 [master] pid:3493 please check project: /usr/local/lib/node_modules/app-inspector/node_modules/xctestwd/XCTestWD/XCTestWD.xcodeproj
>> xctest-client.js:172:14 [master] pid:3493 MDMCreateDeltaDirectory:1920 calling MDMDirectoryDiff with:
state->old_bundle: /var/folders/tg/nr44b54n29g821rtyr8tr3540000gn/C/com.apple.DeveloperTools/All/Xcode/EmbeddedAppDeltas/4cc79676076eb780d086ade00486f50b/95fe7916c490ffc58b7c3ff95e2642009ab0f1ef/XCTestWDUITests-Runner.app
state->new_bundle: /Users/vicent/Library/Developer/Xcode/DerivedData/XCTestWD-evljajykmolwzobrozpobiggeeea/Build/Products/Debug-iphoneos/XCTestWDUITests-Runner.app
state->dst_bundle: /var/folders/tg/nr44b54n29g821rtyr8tr3540000gn/C/com.apple.DeveloperTools/All/Xcode/EmbeddedAppDeltas/XCTestWDUITests-Runner.app.ghDWUa/XCTestWDUITests-Runner.app_sparse.ipa/Payload//XCTestWDUITests-Runner.app, binaryDiff flag: FALSE
dst_ipa: /var/folders/tg/nr44b54n29g821rtyr8tr3540000gn/C/com.apple.DeveloperTools/All/Xcode/EmbeddedAppDeltas/XCTestWDUITests-Runner.app.ghDWUa/XCTestWDUITests-Runner.app_sparse.ipa

>> xctest-client.js:173:14 [master] pid:3493 please check project: /usr/local/lib/node_modules/app-inspector/node_modules/xctestwd/XCTestWD/XCTestWD.xcodeproj
>> xctest-client.js:172:14 [master] pid:3493 __MDMDirectoryDiff_block_invoke.37:1473 calling writeDictToFile with: /var/folders/tg/nr44b54n29g821rtyr8tr3540000gn/C/com.apple.DeveloperTools/All/Xcode/EmbeddedAppDeltas/XCTestWDUITests-Runner.app.ghDWUa/XCTestWDUITests-Runner.app_sparse.ipa/ManifestCache.plist

>> xctest-client.js:173:14 [master] pid:3493 please check project: /usr/local/lib/node_modules/app-inspector/node_modules/xctestwd/XCTestWD/XCTestWD.xcodeproj
>> xctest-client.js:172:14 [master] pid:3493 writeDictToFile:1278 ==== Successfully wrote Manifest cache to /var/folders/tg/nr44b54n29g821rtyr8tr3540000gn/C/com.apple.DeveloperTools/All/Xcode/EmbeddedAppDeltas/XCTestWDUITests-Runner.app.ghDWUa/XCTestWDUITests-Runner.app_sparse.ipa/ManifestCache.plist

>> xctest-client.js:173:14 [master] pid:3493 please check project: /usr/local/lib/node_modules/app-inspector/node_modules/xctestwd/XCTestWD/XCTestWD.xcodeproj


錯誤解決:
  1) xctest client proxy error with: Error: socket hang up問題:
    a)安裝usbmuxd:brew install usbmuxd
    b)命令行執行:iproxy 8900 8100(或者是8100 8100)
    c)啓動app-inspecter

 

 

     若遇到其它問題,繼續解決,直到能夠正確編繹爲止  建議:UnitTests、IntegrationTests 也如1)修改:Bundle id,添加Team,操做後最後再編繹 IntegrationApp

相關文章
相關標籤/搜索