一 appium1.7.0

1.1 仍旧需要中国移动热点

初次用公司内网安装报了一些错误,看了下仍旧是组件下载访问超时异常。
所以我们仍需要我的老方法,开启你的手机的中国移动 4g 卡的 wifi 热点,电脑断其他任何网络,只连该热点的方法

1.2 python 版本问题

我电脑上的是 python36 版本。安装到一半报了如下错误

D:\nodejs\node-global\node_modules\appium\node_modules\heapdump>if not defined npm_config_node_gyp (node "D:\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "" rebuild )
gyp ERR! configure error
gyp ERR! stack Error: Python executable "D:\python\python.EXE" is v3.6.2, which is not supported by gyp.
gyp ERR! stack You can pass the --python switch to point to Python >= v2.5.0 & < 3.0.0.
gyp ERR! stack    at failPythonVersion (D:\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:454:14)
gyp ERR! stack    at D:\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:443:9
gyp ERR! stack    at ChildProcess.exithandler (child_process.js:197:7)
gyp ERR! stack    at emitTwo (events.js:106:13)
gyp ERR! stack    at ChildProcess.emit (events.js:191:7)
gyp ERR! stack    at maybeClose (internal/child_process.js:877:16)
gyp ERR! stack    at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
gyp ERR! System Windows_NT 10.0.15063
gyp ERR! command "D:\\nodejs\\node.exe" "D:\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd D:\nodejs\node-global\node_modules\appium\node_modules\heapdump
gyp ERR! node -v v6.10.0
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok

看日志说应该是,需要 Python >= v2.5.0 & < 3.0.0 之间版本才可编译。
于是乎,参考该文 http://www.cnblogs.com/thunderLL/p/6643022.html 设置了下 python3 和 python2 共存。

1.3 安装成功日志

接下来弄好 python3 和 python2 共存,继续安装,日志如下

C:\Users\cmd>npm i appium -g
D:\nodejs\node-global\appium -> D:\nodejs\node-global\node_modules\appium\build\lib\main.js

> appium-chromedriver@3.0.1 install D:\nodejs\node-global\node_modules\appium\node_modules\appium-chromedriver
> node install-npm.js

info Chromedriver Install Installing Chromedriver version '2.30' for platform 'win' and architecture '32'
info Chromedriver Install Opening temp file to write chromedriver_win32 to...
info Chromedriver Install Downloading https://chromedriver.storage.googleapis.com/2.30/chromedriver_win32.zip...
info Chromedriver Install Writing binary content to C:\Users\cmd\AppData\Local\Temp\2017820-2916-1z0pl0q.ycqns1c3di\chromedriver_win32.zip...
info Chromedriver Install Extracting C:\Users\cmd\AppData\Local\Temp\2017820-2916-1z0pl0q.ycqns1c3di\chromedriver_win32.zip to C:\Users\cmd\AppData\Local\Temp\2017820-2916-1z0pl0q.ycqns1c3di\chromedriver_win32
info Chromedriver Install Creating D:\nodejs\node-global\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win...
info Chromedriver Install Copying unzipped binary, reading from C:\Users\cmd\AppData\Local\Temp\2017820-2916-1z0pl0q.ycqns1c3di\chromedriver_win32\chromedriver.exe...
info Chromedriver Install Writing to D:\nodejs\node-global\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win\chromedriver.exe...
info Chromedriver Install D:\nodejs\node-global\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win\chromedriver.exe successfully put in place

> appium-selendroid-driver@1.6.2 install D:\nodejs\node-global\node_modules\appium\node_modules\appium-selendroid-driver
> node ./bin/install.js

dbug AndroidDriver Getting Java version
info AndroidDriver Java version is: 1.8.0_121
info Selendroid Ensuring D:\nodejs\node-global\node_modules\appium\node_modules\appium-selendroid-driver\selendroid\download exists
info Selendroid Downloading Selendroid standalone server version 0.17.0 from http://repo1.maven.org/maven2/io/selendroid/selendroid-standalone/0.17.0/selendroid-standalone-0.17.0-with-dependencies.jar --> D:\nodejs\node-global\node_modules\appium\node_modules\appium-selendroid-driver\selendroid\download\selendroid-server-7cf7163ac47f1c46eff95b62f78b58c1dabdec534acc6632da3784739f6e9d82.jar
info Selendroid Writing binary content to D:\nodejs\node-global\node_modules\appium\node_modules\appium-selendroid-driver\selendroid\download\selendroid-server.jar.tmp
info Selendroid Selendroid standalone server downloaded
info Selendroid Determining AndroidManifest location
info Selendroid Determining server apk location
info Selendroid Extracting manifest and apk to D:\nodejs\node-global\node_modules\appium\node_modules\appium-selendroid-driver\selendroid\download
info Selendroid Copying manifest and apk to D:\nodejs\node-global\node_modules\appium\node_modules\appium-selendroid-driver\selendroid
info Selendroid Cleaning up temp files
info Selendroid Fixing AndroidManifest icon bug

> appium-uiautomator2-driver@0.6.3 install D:\nodejs\node-global\node_modules\appium\node_modules\appium-uiautomator2-driver
> node ./bin/install.js

dbug AndroidDriver Getting Java version
info AndroidDriver Java version is: 1.8.0_121
info UiAutomator2 downloading UiAutomator2 Server APK v0.1.8 : https://github.com/appium/appium-uiautomator2-server/releases/download/v0.1.8/appium-uiautomator2-server-v0.1.8.apk
info UiAutomator2 downloading UiAutomator2 Server test APK v0.1.8 : https://github.com/appium/appium-uiautomator2-server/releases/download/v0.1.8/appium-uiautomator2-server-debug-androidTest.apk
Error: connect ETIMEDOUT 52.216.81.104:443
UiAutomator2 setup files do not yet exist, waiting...
info UiAutomator2 downloading UiAutomator2 Server APK v0.1.8 : https://github.com/appium/appium-uiautomator2-server/releases/download/v0.1.8/appium-uiautomator2-server-v0.1.8.apk
info UiAutomator2 downloading UiAutomator2 Server test APK v0.1.8 : https://github.com/appium/appium-uiautomator2-server/releases/download/v0.1.8/appium-uiautomator2-server-debug-androidTest.apk
Error: connect ETIMEDOUT 52.216.81.104:443
UiAutomator2 setup files do not yet exist, waiting...
info UiAutomator2 downloading UiAutomator2 Server APK v0.1.8 : https://github.com/appium/appium-uiautomator2-server/releases/download/v0.1.8/appium-uiautomator2-server-v0.1.8.apk
info UiAutomator2 downloading UiAutomator2 Server test APK v0.1.8 : https://github.com/appium/appium-uiautomator2-server/releases/download/v0.1.8/appium-uiautomator2-server-debug-androidTest.apk
Error: connect ETIMEDOUT 52.216.81.104:443
UiAutomator2 setup files do not yet exist, waiting...
info UiAutomator2 downloading UiAutomator2 Server APK v0.1.8 : https://github.com/appium/appium-uiautomator2-server/releases/download/v0.1.8/appium-uiautomator2-server-v0.1.8.apk
info UiAutomator2 downloading UiAutomator2 Server test APK v0.1.8 : https://github.com/appium/appium-uiautomator2-server/releases/download/v0.1.8/appium-uiautomator2-server-debug-androidTest.apk
Error: connect ETIMEDOUT 52.216.81.104:443
UiAutomator2 setup files do not yet exist, waiting...
info UiAutomator2 downloading UiAutomator2 Server APK v0.1.8 : https://github.com/appium/appium-uiautomator2-server/releases/download/v0.1.8/appium-uiautomator2-server-v0.1.8.apk
info UiAutomator2 downloading UiAutomator2 Server test APK v0.1.8 : https://github.com/appium/appium-uiautomator2-server/releases/download/v0.1.8/appium-uiautomator2-server-debug-androidTest.apk
Error: connect ETIMEDOUT 52.216.81.104:443
UiAutomator2 setup files do not yet exist, waiting...
info UiAutomator2 downloading UiAutomator2 Server APK v0.1.8 : https://github.com/appium/appium-uiautomator2-server/releases/download/v0.1.8/appium-uiautomator2-server-v0.1.8.apk
info UiAutomator2 downloading UiAutomator2 Server test APK v0.1.8 : https://github.com/appium/appium-uiautomator2-server/releases/download/v0.1.8/appium-uiautomator2-server-debug-androidTest.apk
Error: connect ETIMEDOUT 52.216.81.104:443
Tried too many times to install UiAutomator2, failing
Original error: Error: connect ETIMEDOUT 52.216.81.104:443
(node:18044) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: Unable to import and run the installer. If you're running from source, run `gulp transpile` and then re-run `npm install`

> appium-windows-driver@0.5.0 install D:\nodejs\node-global\node_modules\appium\node_modules\appium-windows-driver
> node install-npm.js

info WinAppDriver Verifying WinAppDriver is installed with correct checksum
info WinAppDriver WinAppDriver.exe doesn't exist at the correct version, setting up
You are not an administrator; please reinstall as admin
WinAppDriver was not installed; please check your system and re-run npm install if you need WinAppDriver

> heapdump@0.3.9 install D:\nodejs\node-global\node_modules\appium\node_modules\heapdump
> node-gyp rebuild


D:\nodejs\node-global\node_modules\appium\node_modules\heapdump>if not defined npm_config_node_gyp (node "D:\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "" rebuild )
在此解决方案中一次生成一个项目。若要启用并行生成,请添加“/m”开关。
MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装 .NET Framework 2.0 SDK;2) 安装 Microsoft Visual Studio 2005;或 3)
 如果将该组件安装到了其他位置,请将其位置添加到系统路径中。 [D:\nodejs\node-global\node_modules\appium\node_modules\heapdump\build\binding.sln]
gyp ERR! build error
gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (D:\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:276:23)
gyp ERR! stack     at emitTwo (events.js:106:13)
gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Windows_NT 10.0.15063
gyp ERR! command "D:\\nodejs\\node.exe" "D:\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd D:\nodejs\node-global\node_modules\appium\node_modules\heapdump
gyp ERR! node -v v6.10.0
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok

> async-lock@1.0.0 postinstall D:\nodejs\node-global\node_modules\appium\node_modules\async-lock
>

D:\nodejs\node-global
`-- appium@1.7.0
  +-- accepts@1.3.4
  +-- adbkit@2.11.0
  | +-- bluebird@2.9.34
  | +-- debug@2.6.8
  | `-- ms@2.0.0
  +-- adbkit-logcat@1.1.0
  +-- adbkit-monkey@1.0.1
  | `-- async@0.2.10
  +-- aggregate-error@1.0.0
  +-- ajv@4.11.8
  +-- amdefine@1.0.1
  +-- ansi@0.3.1
  +-- ansi-regex@2.1.1
  +-- appium-adb@2.28.5
  | `-- bluebird@3.5.0
  +-- appium-android-bootstrap@2.9.4
  | +-- lodash@3.10.1
  | +-- source-map@0.1.32
  | `-- source-map-support@0.3.3
  +-- appium-android-driver@1.26.5
  | +-- bluebird@3.5.0
  | +-- lodash@3.10.1
  | +-- source-map@0.1.32
  | `-- source-map-support@0.3.3
  +-- appium-android-ime@2.0.0
  +-- appium-base-driver@2.15.3
  | `-- request-promise@4.2.1
  |   `-- bluebird@3.5.0
  +-- appium-chromedriver@3.0.1
  | +-- lodash@3.10.1
  | +-- source-map@0.1.32
  | `-- source-map-support@0.3.3
  +-- appium-espresso-driver@1.0.0-beta.3
  | +-- ansi-regex@3.0.0
  | +-- bluebird@3.5.0
  | +-- camelcase@4.1.0
  | +-- find-up@2.1.0
  | +-- is-fullwidth-code-point@2.0.0
  | +-- load-json-file@2.0.0
  | +-- os-locale@2.1.0
  | +-- path-type@2.0.0
  | +-- read-pkg@2.0.0
  | +-- read-pkg-up@2.0.0
  | +-- request-promise@4.2.1
  | +-- string-width@2.1.1
  | +-- strip-ansi@4.0.0
  | +-- strip-bom@3.0.0
  | +-- which-module@2.0.0
  | +-- yargs@8.0.2
  | `-- yargs-parser@7.0.0
  +-- appium-fake-driver@0.2.0
  | +-- bluebird@3.5.0
  | +-- camelcase@2.1.1
  | +-- lodash@3.10.1
  | `-- yargs@3.32.0
  +-- appium-ios-driver@1.27.2
  | +-- ansi-regex@3.0.0
  | +-- camelcase@4.1.0
  | +-- find-up@2.1.0
  | +-- is-fullwidth-code-point@2.0.0
  | +-- load-json-file@2.0.0
  | +-- os-locale@2.1.0
  | +-- path-type@2.0.0
  | +-- read-pkg@2.0.0
  | +-- read-pkg-up@2.0.0
  | +-- request-promise@4.2.1
  | | `-- bluebird@3.5.0
  | +-- string-width@2.1.1
  | +-- strip-ansi@4.0.0
  | +-- strip-bom@3.0.0
  | +-- which-module@2.0.0
  | +-- xpath@0.0.24
  | +-- yargs@8.0.2
  | `-- yargs-parser@7.0.0
  +-- appium-ios-simulator@2.2.5
  +-- appium-mac-driver@1.0.2
  | +-- camelcase@2.1.1
  | +-- punycode@2.1.0
  | +-- request-promise@3.0.0
  | | `-- bluebird@3.5.0
  | +-- source-map@0.1.32
  | +-- source-map-support@0.3.3
  | `-- yargs@3.32.0
  +-- appium-remote-debugger@3.6.0
  | +-- bluebird@3.5.0
  | `-- request-promise@4.2.1
  +-- appium-selendroid-driver@1.6.2
  | +-- bluebird@3.5.0
  | +-- camelcase@2.1.1
  | +-- lodash@3.10.1
  | +-- request-promise@4.2.1
  | +-- source-map@0.1.32
  | +-- source-map-support@0.3.3
  | `-- yargs@3.32.0
  +-- appium-support@2.8.3
  +-- appium-uiautomator@1.1.2
  | +-- source-map@0.1.32
  | `-- source-map-support@0.3.3
  +-- appium-uiautomator2-driver@0.6.3
  | +-- ansi-regex@3.0.0
  | +-- camelcase@4.1.0
  | +-- find-up@2.1.0
  | +-- is-fullwidth-code-point@2.0.0
  | +-- load-json-file@2.0.0
  | +-- lodash@3.10.1
  | +-- os-locale@2.1.0
  | +-- path-type@2.0.0
  | +-- read-pkg@2.0.0
  | +-- read-pkg-up@2.0.0
  | +-- request-promise@4.2.1
  | | `-- bluebird@3.5.0
  | +-- source-map@0.1.32
  | +-- source-map-support@0.3.3
  | +-- string-width@2.1.1
  | +-- strip-ansi@4.0.0
  | +-- strip-bom@3.0.0
  | +-- which-module@2.0.0
  | +-- yargs@8.0.2
  | `-- yargs-parser@7.0.0
  +-- appium-uiautomator2-server@0.1.8
  +-- appium-unlock@0.1.1
  +-- appium-windows-driver@0.5.0
  | +-- camelcase@2.1.1
  | +-- punycode@2.1.0
  | +-- request-promise@3.0.0
  | | `-- bluebird@3.5.0
  | +-- source-map@0.1.32
  | +-- source-map-support@0.3.3
  | `-- yargs@3.32.0
  +-- appium-xcode@3.3.1
  | +-- lodash@3.10.1
  | +-- source-map@0.1.32
  | `-- source-map-support@0.3.3
  +-- appium-xcuitest-driver@2.49.0
  | +-- ansi-regex@3.0.0
  | +-- bluebird@3.5.0
  | +-- camelcase@4.1.0
  | +-- find-up@2.1.0
  | +-- is-fullwidth-code-point@2.0.0
  | +-- load-json-file@2.0.0
  | +-- os-locale@2.1.0
  | +-- path-type@2.0.0
  | +-- read-pkg@2.0.0
  | +-- read-pkg-up@2.0.0
  | +-- request-promise@4.2.1
  | +-- string-width@2.1.1
  | +-- strip-ansi@4.0.0
  | +-- strip-bom@3.0.0
  | +-- which-module@2.0.0
  | +-- yargs@8.0.2
  | `-- yargs-parser@7.0.0
  +-- appium-youiengine-driver@1.0.13
  +-- archiver@1.3.0
  | `-- glob@7.1.2
  +-- archiver-utils@1.3.0
  | `-- glob@7.1.2
  +-- are-we-there-yet@1.1.4
  +-- argparse@1.0.9
  +-- array-filter@0.0.1
  +-- array-flatten@1.1.1
  +-- array-map@0.0.0
  +-- array-reduce@0.0.0
  +-- arrify@1.0.1
  +-- asn1@0.2.3
  +-- assert-plus@0.2.0
  +-- assertion-error@1.0.2
  +-- async@2.5.0
  +-- async-listener@0.6.7
  | `-- semver@5.4.1
  +-- async-lock@1.0.0
  +-- asyncbox@2.3.1
  | +-- babel-runtime@5.5.5
  | +-- chai@3.5.0
  | +-- chai-as-promised@5.3.0
  | +-- core-js@0.9.18
  | +-- lodash@3.10.1
  | +-- source-map@0.1.32
  | `-- source-map-support@0.3.3
  +-- asynckit@0.4.0
  +-- aws-sign2@0.6.0
  +-- aws4@1.6.0
  +-- babel-runtime@5.8.24
  +-- balanced-match@1.0.0
  +-- base64-js@0.0.8
  +-- basic-auth@1.1.0
  +-- bcrypt-pbkdf@1.0.1
  +-- big-integer@1.6.25
  +-- bignumber.js@2.4.0
  +-- bl@1.2.1
  +-- bluebird@2.11.0
  +-- bmp-js@0.0.3
  +-- body-parser@1.18.1
  | +-- debug@2.6.8
  | `-- ms@2.0.0
  +-- boom@2.10.1
  +-- bplist-creator@0.0.6
  +-- bplist-parser@0.1.1
  +-- brace-expansion@1.1.8
  +-- buffer-crc32@0.2.13
  +-- buffer-equal@0.0.1
  +-- bufferpack@0.0.6
  +-- builtin-modules@1.1.1
  +-- bytes@3.0.0
  +-- camelcase@3.0.0
  +-- caseless@0.12.0
  +-- charenc@0.0.2
  +-- clean-stack@1.3.0
  +-- cliui@3.2.0
  +-- cls-bluebird@1.1.3
  +-- co@4.6.0
  +-- code-point-at@1.1.0
  +-- colors@1.1.2
  +-- combined-stream@1.0.5
  +-- commander@2.9.0
  +-- compress-commons@1.2.0
  +-- concat-map@0.0.1
  +-- concat-stream@1.6.0
  +-- content-disposition@0.5.2
  +-- content-type@1.0.4
  +-- continuation-local-storage@3.2.0
  +-- cookie@0.3.1
  +-- cookie-signature@1.0.6
  +-- core-js@1.2.7
  +-- core-util-is@1.0.2
  +-- crc@3.4.4
  +-- crc32-stream@2.0.0
  +-- cross-spawn@5.1.0
  +-- cross-spawn-async@2.2.5
  +-- crypt@0.0.2
  +-- cryptiles@2.0.5
  +-- cycle@1.0.3
  +-- dashdash@1.14.1
  | `-- assert-plus@1.0.0
  +-- dateformat@2.0.0
  +-- debug@2.2.0
  +-- decamelize@1.2.0
  +-- deep-eql@0.1.3
  | `-- type-detect@0.1.1
  +-- delayed-stream@1.0.0
  +-- delegates@1.0.0
  +-- depd@1.1.1
  +-- destroy@1.0.4
  +-- dom-walk@0.1.1
  +-- ecc-jsbn@0.1.1
  +-- ee-first@1.1.1
  +-- emitter-listener@1.0.1
  | `-- shimmer@1.0.0
  +-- encodeurl@1.0.1
  +-- end-of-stream@1.4.0
  +-- error-ex@1.3.1
  +-- es6-error@2.1.1
  +-- es6-mapify@1.0.0
  +-- es6-promise@3.3.1
  +-- escape-html@1.0.3
  +-- etag@1.8.1
  +-- execa@0.7.0
  +-- exif-parser@0.1.12
  +-- express@4.15.4
  | +-- debug@2.6.8
  | +-- ms@2.0.0
  | `-- qs@6.5.0
  +-- extend@3.0.1
  +-- extract-zip@1.6.5
  | +-- mkdirp@0.5.0
  | `-- yauzl@2.4.1
  +-- extsprintf@1.3.0
  +-- eyes@0.1.8
  +-- fd-slicer@1.0.1
  +-- file-type@3.9.0
  +-- finalhandler@1.0.5
  | +-- debug@2.6.8
  | `-- ms@2.0.0
  +-- find-up@1.1.2
  +-- fkill@5.1.0
  | `-- execa@0.8.0
  +-- for-each@0.3.2
  +-- forever-agent@0.6.1
  +-- form-data@2.1.4
  +-- forwarded@0.1.2
  +-- fresh@0.5.0
  +-- fs.realpath@1.0.0
  +-- gauge@1.2.7
  +-- get-caller-file@1.0.2
  +-- get-stream@3.0.0
  +-- getpass@0.1.7
  | `-- assert-plus@1.0.0
  +-- glob@6.0.4
  +-- global@4.3.2
  +-- graceful-fs@4.1.11
  +-- graceful-readlink@1.0.1
  +-- har-schema@1.0.5
  +-- har-validator@4.2.1
  +-- has-unicode@2.0.1
  +-- hawk@3.1.3
  +-- hoek@2.16.3
  +-- hosted-git-info@2.5.0
  +-- http-errors@1.6.2
  +-- http-signature@1.1.1
  +-- iconv-lite@0.4.19
  +-- indent-string@3.2.0
  +-- inflight@1.0.6
  +-- inherits@2.0.3
  +-- invert-kv@1.0.0
  +-- io.appium.settings@2.3.0
  +-- ip-regex@1.0.3
  +-- ipaddr.js@1.4.0
  +-- is-arrayish@0.2.1
  +-- is-bluebird@1.0.2
  +-- is-buffer@1.1.5
  +-- is-builtin-module@1.0.0
  +-- is-fullwidth-code-point@1.0.0
  +-- is-function@1.0.1
  +-- is-number-like@1.0.8
  +-- is-os@1.0.0
  +-- is-stream@1.1.0
  +-- is-typedarray@1.0.0
  +-- is-utf8@0.2.1
  +-- isarray@1.0.0
  +-- isexe@2.0.0
  +-- isstream@0.1.2
  +-- jimp@0.2.28
  +-- jpeg-js@0.2.0
  +-- js2xmlparser2@0.2.0
  +-- jsbn@0.1.1
  +-- json-schema@0.2.3
  +-- json-stable-stringify@1.0.1
  +-- json-stringify-safe@5.0.1
  +-- jsonify@0.0.0
  +-- jsprim@1.4.1
  | `-- assert-plus@1.0.0
  +-- lazystream@1.0.0
  +-- lcid@1.0.0
  +-- load-bmfont@1.3.0
  +-- load-json-file@1.1.0
  +-- locate-path@2.0.0
  | `-- path-exists@3.0.0
  +-- lodash@4.17.4
  +-- lodash.isfinite@3.3.2
  +-- lodash.pad@4.5.1
  +-- lodash.padend@4.6.1
  +-- lodash.padstart@4.6.1
  +-- lru-cache@4.1.1
  +-- md5@2.2.1
  +-- md5-file@2.0.7
  +-- media-typer@0.3.0
  +-- mem@1.1.0
  +-- merge-descriptors@1.0.1
  +-- method-override@2.3.9
  | +-- debug@2.6.8
  | `-- ms@2.0.0
  +-- methods@1.1.2
  +-- mime@1.3.4
  +-- mime-db@1.30.0
  +-- mime-types@2.1.17
  +-- mimic-fn@1.1.0
  +-- min-document@2.19.0
  +-- minimatch@3.0.4
  +-- minimist@0.0.8
  +-- mkdirp@0.5.1
  +-- morgan@1.8.2
  | +-- debug@2.6.8
  | `-- ms@2.0.0
  +-- ms@0.7.1
  +-- mv@2.1.1
  | `-- rimraf@2.4.5
  +-- nan@2.7.0
  +-- ncp@2.0.0
  +-- negotiator@0.6.1
  +-- net@1.0.2
  +-- node-forge@0.7.1
  +-- node-idevice@0.1.6
  +-- node-simctl@3.11.1
  +-- normalize-package-data@2.4.0
  +-- normalize-path@2.1.1
  +-- npm-run-path@2.0.2
  +-- npmlog@2.0.4
  +-- number-is-nan@1.0.1
  +-- oauth-sign@0.8.2
  +-- object-assign@4.1.1
  +-- on-finished@2.3.0
  +-- on-headers@1.0.1
  +-- once@1.4.0
  +-- openssl-wrapper@0.3.4
  +-- options@0.0.6
  +-- os-locale@1.4.0
  +-- os-tmpdir@1.0.2
  +-- p-finally@1.0.0
  +-- p-limit@1.1.0
  +-- p-locate@2.0.0
  +-- parse-bmfont-ascii@1.0.6
  +-- parse-bmfont-binary@1.0.6
  +-- parse-bmfont-xml@1.1.3
  +-- parse-headers@2.0.1
  +-- parse-json@2.2.0
  +-- parseurl@1.3.2
  +-- path@0.12.7
  | `-- process@0.11.10
  +-- path-exists@2.1.0
  +-- path-is-absolute@1.0.1
  +-- path-key@2.0.1
  +-- path-to-regexp@0.1.7
  +-- path-type@1.1.0
  +-- pem@1.11.0
  +-- pend@1.2.0
  +-- performance-now@0.2.0
  +-- pify@2.3.0
  +-- pinkie@2.0.4
  +-- pinkie-promise@2.0.1
  +-- pixelmatch@4.0.2
  +-- plist@1.2.0
  +-- pngjs@3.3.0
  +-- portfinder@1.0.13
  | `-- async@1.5.2
  +-- portscanner@2.1.1
  | `-- async@1.5.2
  +-- process@0.5.2
  +-- process-nextick-args@1.0.7
  +-- proxy-addr@1.1.5
  +-- pseudomap@1.0.2
  +-- punycode@1.4.1
  +-- qs@6.5.1
  +-- querystring@0.2.0
  +-- range-parser@1.2.0
  +-- raw-body@2.3.2
  +-- read-chunk@1.0.1
  +-- read-pkg@1.1.0
  +-- read-pkg-up@1.0.1
  +-- readable-stream@2.3.3
  +-- remove-trailing-separator@1.1.0
  +-- request@2.81.0
  | `-- qs@6.4.0
  +-- request-promise@1.0.2
  | `-- lodash@3.10.1
  +-- request-promise-core@1.1.1
  +-- require-directory@2.1.1
  +-- require-main-filename@1.0.1
  +-- rimraf@2.6.2
  | `-- glob@7.1.2
  +-- rsvp@3.6.2
  +-- safari-launcher@2.0.5
  +-- safe-buffer@5.1.1
  +-- sax@1.2.4
  +-- semver@4.3.6
  +-- semver-compare@1.0.0
  +-- send@0.15.4
  | +-- debug@2.6.8
  | `-- ms@2.0.0
  +-- serve-favicon@2.4.4
  | +-- fresh@0.5.1
  | `-- ms@2.0.0
  +-- serve-static@1.12.4
  +-- set-blocking@2.0.0
  +-- setprototypeof@1.0.3
  +-- shebang-command@1.2.0
  +-- shebang-regex@1.0.0
  +-- shell-quote@1.6.1
  +-- shimmer@1.1.0
  +-- signal-exit@3.0.2
  +-- sntp@1.0.9
  +-- source-map@0.5.7
  +-- source-map-support@0.4.18
  +-- spdx-correct@1.0.2
  +-- spdx-expression-parse@1.0.4
  +-- spdx-license-ids@1.2.2
  +-- split@0.3.3
  +-- sprintf-js@1.0.3
  +-- sshpk@1.13.1
  | `-- assert-plus@1.0.0
  +-- stack-trace@0.0.10
  +-- statuses@1.3.1
  +-- stealthy-require@1.1.1
  +-- stream-buffers@2.2.0
  +-- stream-to@0.2.2
  +-- stream-to-buffer@0.1.0
  +-- string-width@1.0.2
  +-- string_decoder@1.0.3
  +-- stringstream@0.0.5
  +-- strip-ansi@3.0.1
  +-- strip-bom@2.0.0
  +-- strip-eof@1.0.0
  +-- tar-stream@1.5.4
  +-- taskkill@2.0.0
  | `-- execa@0.1.1
  +-- teen_process@1.10.0
  | +-- source-map@0.1.32
  | `-- source-map-support@0.2.10
  +-- temp@0.8.3
  | `-- rimraf@2.2.8
  +-- through@2.3.8
  +-- tinycolor2@1.4.1
  +-- tough-cookie@2.3.2
  +-- traceur@0.0.111
  | +-- glob@5.0.15
  | `-- source-map-support@0.2.10
  |   `-- source-map@0.1.32
  +-- trim@0.0.1
  +-- tunnel-agent@0.6.0
  +-- tweetnacl@0.14.5
  +-- type-detect@1.0.0
  +-- type-is@1.6.15
  +-- typedarray@0.0.6
  +-- ultron@1.0.2
  +-- unpipe@1.0.0
  +-- url@0.11.0
  | `-- punycode@1.3.2
  +-- url-regex@3.2.0
  +-- utf7@1.0.2
  | `-- semver@5.3.0
  +-- util@0.10.3
  | `-- inherits@2.0.1
  +-- util-deprecate@1.0.2
  +-- utils-merge@1.0.0
  +-- uuid@3.1.0
  +-- uuid-js@0.7.5
  +-- validate-npm-package-license@3.0.1
  +-- validate.js@0.9.0
  +-- vary@1.1.1
  +-- verror@1.10.0
  | `-- assert-plus@1.0.0
  +-- walkdir@0.0.11
  +-- which@1.3.0
  +-- which-module@1.0.0
  +-- window-size@0.1.4
  +-- winston@2.3.1
  | +-- async@1.0.0
  | `-- colors@1.0.3
  +-- wrap-ansi@2.1.0
  +-- wrappy@1.0.2
  +-- ws@1.1.4
  +-- xhr@2.4.0
  +-- xml-parse-from-string@1.0.1
  +-- xml2js@0.4.19
  | `-- xmlbuilder@9.0.4
  +-- xmlbuilder@4.0.0
  | `-- lodash@3.10.1
  +-- xmldom@0.1.27
  +-- xpath@0.0.9
  +-- xtend@4.0.1
  +-- y18n@3.2.1
  +-- yallist@2.1.2
  +-- yargs@6.6.0
  +-- yargs-parser@4.2.1
  +-- yauzl@2.8.0
  `-- zip-stream@1.2.0

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.x (node_modules\appium\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: heapdump@0.3.9 (node_modules\appium\node_modules\heapdump):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: heapdump@0.3.9 install: `node-gyp rebuild`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

C:\Users\cmd>appium -v
1.7.0

C:\Users\cmd>appium-doctor
info AppiumDoctor Appium Doctor v.1.4.3
info AppiumDoctor ### Diagnostic starting ###
info AppiumDoctor  ✔ The Node.js binary was found at: D:\nodejs\node.exe
info AppiumDoctor  ✔ Node version is 6.10.0
info AppiumDoctor  ✔ ANDROID_HOME is set to: D:\Android\android-sdk-windows
info AppiumDoctor  ✔ JAVA_HOME is set to: C:\Program Files\Java\jdk1.8.0_121
info AppiumDoctor  ✔ adb exists at: D:\Android\android-sdk-windows\platform-tools\adb.exe
info AppiumDoctor  ✔ android exists at: D:\Android\android-sdk-windows\tools\android.bat
info AppiumDoctor  ✔ emulator exists at: D:\Android\android-sdk-windows\tools\emulator.exe
info AppiumDoctor  ✔ Bin directory of %JAVA_HOME% is set
info AppiumDoctor ### Diagnostic completed, no fix needed. ###
info AppiumDoctor
info AppiumDoctor Everything looks good, bye!
info AppiumDoctor

二 以往疑惑

可以看到期间又报了一个错误,这个错误我以前也是忽略掉的,因为对 appium 脚本并没有什么影响。但现在又看到了,想问下小伙伴们,谁解释下
appium 想用 VCBuild.exe 去编译安装什么模块项目,这个编译模块项目是干什么的?

在此解决方案中一次生成一个项目。若要启用并行生成,请添加“/m”开关。
MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装 .NET Framework 2.0 SDK;2) 安装 Microsoft Visual Studio 2005;或 3)
 如果将该组件安装到了其他位置,请将其位置添加到系统路径中。 [D:\nodejs\node-global\node_modules\appium\node_modules\heapdump\build\binding.sln]
gyp ERR! build error
gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (D:\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:276:23)
gyp ERR! stack     at emitTwo (events.js:106:13)
gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Windows_NT 10.0.15063
gyp ERR! command "D:\\nodejs\\node.exe" "D:\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd D:\nodejs\node-global\node_modules\appium\node_modules\heapdump
gyp ERR! node -v v6.10.0
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok


↙↙↙阅读原文可查看相关链接,并与作者交流