真机控件获取 app-inspector
App Inspector 是运行在浏览器端的移动设备 UI 查看器,使用树状态结构查看 UI 布局,并且能自动生成 XPath,方便脚本的编写和生成。
1、安装app-inspector:npm install app-inspector -g
不需要配置环境变量
若是要卸载原有的:npm uninstall app-inspector -g
npm cache clean (清除缓存)
2、使用app-inspector
打开终端启动服务:输入macaca server --verbose
打开另一个终端:输入app-inspector -u 设备id
设备id通过adb devices 获取
然后在浏览器里面打开输出的链接:如 http://192.168.2.100:5678
若是出现以下错误:
C:\Users\abc>app-inspector -u GWY0217406000483
{ Error: Command failed: D:\android-sdk-windows/platform-tools/adb -s GWY0217406000483 shell "pm install -r "/data/local/tmp/com.macaca.android.testin
g""
Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package com.macaca.android.testing signatures do not match the previously installed version; ignoring!]
at ChildProcess.exithandler (child_process.js:275:12)
at emitTwo (events.js:126:13)
at ChildProcess.emit (events.js:214:7)
at maybeClose (internal/child_process.js:925:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
killed: false,
code: 1,
signal: null,
cmd: 'D:\\android-sdk-windows/platform-tools/adb -s GWY0217406000483 shell "pm install -r "/data/local/tmp/com.macaca.android.testing""' }
解决是将手机上的应用程序给删除,如下图:
删除后在执行一遍:
点击页面元素,即可获取resource-id和xpath
若切换页面,需现在手机上切换,然后刷新浏览器,则获取手机的最新页面
安装信息:
C:\Users\yl>npm install uirecorder -g npm WARN deprecated hawk@3.1.3: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs an d critical security issues. npm WARN deprecated cryptiles@2.0.5: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest ver sion to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/com mercial). npm WARN deprecated hoek@2.16.3: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commerc ial). npm WARN deprecated boom@2.10.1: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commerc ial). npm WARN deprecated sntp@1.0.9: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs an d critical security issues. C:\Users\yl\AppData\Roaming\npm\uirecorder -> C:\Users\yl\AppData\Roaming\npm\node_modules\uirecorder\bin\uirecorder npm WARN update-linked node_modules\uirecorder\node_modules\ansi-styles needs updating to 2.2.1 from 3.2.1 but we can't, as it's a symlink npm WARN update-linked node_modules\uirecorder\node_modules\extsprintf needs updating to 1.3.0 from 1.4.0 but we can't, as it's a symlink npm WARN update-linked node_modules\uirecorder\node_modules\strip-ansi needs updating to 3.0.1 from 4.0.0 but we can't, as it's a symlink npm WARN update-linked node_modules\uirecorder\node_modules\chalk needs updating to 1.1.3 from 2.4.2 but we can't, as it's a symlink npm WARN update-linked node_modules\uirecorder\node_modules\readable-stream needs updating to 2.3.6 from 3.3.0 but we can't, as it's a symlink npm WARN update-linked node_modules\uirecorder\node_modules\fstream needs updating to 1.0.12 from 1.0.11 but we can't, as it's a symlink npm WARN update-linked node_modules\uirecorder\node_modules\jwebdriver needs updating to 2.3.0 from 2.2.6 but we can't, as it's a symlink > chromedriver@2.46.0 install C:\Users\yl\AppData\Roaming\npm\node_modules\uirecorder\node_modules\chromedriver > node install.js ChromeDriver binary exists. Validating... ChromeDriver 2.46.628402 (536cd7adbad73a3783fdc2cab92ab2ba7ec361e1) ChromeDriver is already available at 'C:\Users\yl\AppData\Local\Temp\2.46\chromedriver\chromedriver.exe'. Copying to target path C:\Users\yl\AppData\Roaming\npm\node_modules\uirecorder\node_modules\chromedriver\lib\chromedriver Done. ChromeDriver binary available at C:\Users\yl\AppData\Roaming\npm\node_modules\uirecorder\node_modules\chromedriver\lib\chromedriver\chromedriver.exe > websocket@1.0.22 install C:\Users\yl\AppData\Roaming\npm\node_modules\uirecorder\node_modules\websocket > (node-gyp rebuild 2> builderror.log) || (exit 0) C:\Users\yl\AppData\Roaming\npm\node_modules\uirecorder\node_modules\websocket>if not defined npm_config_node_gyp (node "C:\Users\yl\AppData\Roaming\npm\n ode_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node "" rebuild ) - delegates@1.0.0 node_modules\uirecorder\node_modules\_are-we-there-yet@1.1.5@are-we-there-yet\node_modules\delegates - array-uniq@1.0.3 node_modules\uirecorder\node_modules\_array-union@1.0.2@array-union\node_modules\array-uniq - lodash@4.17.11 node_modules\uirecorder\node_modules\_async@2.1.2@async\node_modules\lodash - tweetnacl@0.14.5 node_modules\uirecorder\node_modules\_bcrypt-pbkdf@1.0.2@bcrypt-pbkdf\node_modules\tweetnacl - hoek@2.16.3 node_modules\uirecorder\node_modules\_boom@2.10.1@boom\node_modules\hoek - balanced-match@1.0.0 node_modules\uirecorder\node_modules\_brace-expansion@1.1.11@brace-expansion\node_modules\balanced-match - concat-map@0.0.1 node_modules\uirecorder\node_modules\_brace-expansion@1.1.11@brace-expansion\node_modules\concat-map - assertion-error@1.1.0 node_modules\uirecorder\node_modules\_chai@3.5.0@chai\node_modules\assertion-error - type-detect@1.0.0 node_modules\uirecorder\node_modules\_chai@3.5.0@chai\node_modules\type-detect - escape-string-regexp@1.0.5 node_modules\uirecorder\node_modules\_chalk@2.4.2@chalk\node_modules\escape-string-regexp - graceful-fs@4.1.15 node_modules\uirecorder\node_modules\_cmd-shim@2.0.2@cmd-shim\node_modules\graceful-fs - co-thread@0.0.1 node_modules\uirecorder\node_modules\_co-parallel@1.0.0@co-parallel\node_modules\co-thread - color-convert@1.9.3 node_modules\uirecorder\node_modules\_ansi-styles@3.2.1@ansi-styles\node_modules\color-convert - ansi-styles@3.2.1 node_modules\uirecorder\node_modules\_chalk@2.4.2@chalk\node_modules\ansi-styles - delayed-stream@1.0.0 node_modules\uirecorder\node_modules\_combined-stream@1.0.8@combined-stream\node_modules\delayed-stream - boom@2.10.1 node_modules\uirecorder\node_modules\_cryptiles@2.0.5@cryptiles\node_modules\boom - type-detect@0.1.1 node_modules\uirecorder\node_modules\_deep-eql@0.1.3@deep-eql\node_modules\type-detect - deep-eql@0.1.3 node_modules\uirecorder\node_modules\_chai@3.5.0@chai\node_modules\deep-eql - ast-types@0.12.4 node_modules\uirecorder\node_modules\_degenerator@1.0.4@degenerator\node_modules\ast-types - esprima@3.1.3 node_modules\uirecorder\node_modules\_degenerator@1.0.4@degenerator\node_modules\esprima - jsbn@0.1.1 node_modules\uirecorder\node_modules\_ecc-jsbn@0.1.2@ecc-jsbn\node_modules\jsbn - safer-buffer@2.1.2 node_modules\uirecorder\node_modules\_ecc-jsbn@0.1.2@ecc-jsbn\node_modules\safer-buffer - is-arrayish@0.2.1 node_modules\uirecorder\node_modules\_error-ex@1.3.2@error-ex\node_modules\is-arrayish - es6-promisify@5.0.0 node_modules\uirecorder\node_modules\_agent-base@4.2.1@agent-base\node_modules\es6-promisify - esprima@3.1.3 node_modules\uirecorder\node_modules\_escodegen@1.11.1@escodegen\node_modules\esprima - estraverse@4.2.0 node_modules\uirecorder\node_modules\_escodegen@1.11.1@escodegen\node_modules\estraverse - esutils@2.0.2 node_modules\uirecorder\node_modules\_escodegen@1.11.1@escodegen\node_modules\esutils - source-map@0.6.1 node_modules\uirecorder\node_modules\_escodegen@1.11.1@escodegen\node_modules\source-map - chardet@0.4.2 node_modules\uirecorder\node_modules\_external-editor@2.2.0@external-editor\node_modules\chardet - debug@2.6.9 node_modules\uirecorder\node_modules\_extract-zip@1.6.7@extract-zip\node_modules\debug - graceful-fs@4.1.15 node_modules\uirecorder\node_modules\_fs-extra@0.26.7@fs-extra\node_modules\graceful-fs - path-is-absolute@1.0.1 node_modules\uirecorder\node_modules\_fs-extra@0.26.7@fs-extra\node_modules\path-is-absolute - graceful-fs@4.1.15 node_modules\uirecorder\node_modules\_fstream@1.0.11@fstream\node_modules\graceful-fs - inherits@2.0.3 node_modules\uirecorder\node_modules\_fstream@1.0.11@fstream\node_modules\inherits - xregexp@2.0.0 node_modules\uirecorder\node_modules\_ftp@0.3.10@ftp\node_modules\xregexp - aproba@1.2.0 node_modules\uirecorder\node_modules\_gauge@2.7.4@gauge\node_modules\aproba - console-control-strings@1.1.0 node_modules\uirecorder\node_modules\_gauge@2.7.4@gauge\node_modules\console-control-strings - has-unicode@2.0.1 node_modules\uirecorder\node_modules\_gauge@2.7.4@gauge\node_modules\has-unicode - object-assign@4.1.1 node_modules\uirecorder\node_modules\_gauge@2.7.4@gauge\node_modules\object-assign - signal-exit@3.0.2 node_modules\uirecorder\node_modules\_gauge@2.7.4@gauge\node_modules\signal-exit - is-property@1.0.2 node_modules\uirecorder\node_modules\_generate-function@2.3.1@generate-function\node_modules\is-property - data-uri-to-buffer@2.0.1 node_modules\uirecorder\node_modules\_get-uri@2.0.3@get-uri\node_modules\data-uri-to-buffer - extend@3.0.2 node_modules\uirecorder\node_modules\_get-uri@2.0.3@get-uri\node_modules\extend - file-uri-to-path@1.0.0 node_modules\uirecorder\node_modules\_get-uri@2.0.3@get-uri\node_modules\file-uri-to-path - ftp@0.3.10 node_modules\uirecorder\node_modules\_get-uri@2.0.3@get-uri\node_modules\ftp - array-union@1.0.2 node_modules\uirecorder\node_modules\_globby@6.1.0@globby\node_modules\array-union - object-assign@4.1.1 node_modules\uirecorder\node_modules\_globby@6.1.0@globby\node_modules\object-assign - pify@2.3.0 node_modules\uirecorder\node_modules\_globby@6.1.0@globby\node_modules\pify - array-parallel@0.1.3 node_modules\uirecorder\node_modules\_gm@1.23.0@gm\node_modules\array-parallel - array-series@0.1.5 node_modules\uirecorder\node_modules\_gm@1.23.0@gm\node_modules\array-series - commander@2.20.0 node_modules\uirecorder\node_modules\_har-validator@2.0.6@har-validator\node_modules\commander - ansi-regex@2.1.1 node_modules\uirecorder\node_modules\_has-ansi@2.0.0@has-ansi\node_modules\ansi-regex - has-ansi@2.0.0 node_modules\uirecorder\node_modules\_chalk@1.1.3@chalk\node_modules\has-ansi - ms@2.1.1 node_modules\uirecorder\node_modules\_humanize-ms@1.2.1@humanize-ms\node_modules\ms - humanize-ms@1.2.1 node_modules\uirecorder\node_modules\_agentkeepalive@3.5.2@agentkeepalive\node_modules\humanize-ms - iconv-lite@0.4.24 node_modules\uirecorder\node_modules\_external-editor@2.2.0@external-editor\node_modules\iconv-lite - number-is-nan@1.0.1 node_modules\uirecorder\node_modules\_is-fullwidth-code-point@1.0.0@is-fullwidth-code-point\node_modules\number-is-nan - is-my-json-valid@2.20.0 node_modules\uirecorder\node_modules\_har-validator@2.0.6@har-validator\node_modules\is-my-json-valid - graceful-fs@4.1.15 node_modules\uirecorder\node_modules\_jsonfile@2.4.0@jsonfile\node_modules\graceful-fs - jsonfile@2.4.0 node_modules\uirecorder\node_modules\_fs-extra@0.26.7@fs-extra\node_modules\jsonfile - assert-plus@1.0.0 node_modules\uirecorder\node_modules\_jsprim@1.4.1@jsprim\node_modules\assert-plus - extsprintf@1.3.0 node_modules\uirecorder\node_modules\_jsprim@1.4.1@jsprim\node_modules\extsprintf - json-schema@0.2.3 node_modules\uirecorder\node_modules\_jsprim@1.4.1@jsprim\node_modules\json-schema - pako@0.2.9 node_modules\uirecorder\node_modules\_jszip@2.5.0@jszip\node_modules\pako - xtend@4.0.1 node_modules\uirecorder\node_modules\_jwebdriver@2.2.6@jwebdriver\node_modules\xtend - klaw@1.3.1 node_modules\uirecorder\node_modules\_fs-extra@0.26.7@fs-extra\node_modules\klaw - invert-kv@1.0.0 node_modules\uirecorder\node_modules\_lcid@1.0.0@lcid\node_modules\invert-kv - prelude-ls@1.1.2 node_modules\uirecorder\node_modules\_levn@0.3.0@levn\node_modules\prelude-ls - lru-cache@4.1.5 node_modules\uirecorder\node_modules\_cross-spawn@4.0.2@cross-spawn\node_modules\lru-cache - minimist@1.2.0 node_modules\uirecorder\node_modules\_make-plural@3.0.6@make-plural\node_modules\minimist - xregexp@2.0.0 node_modules\uirecorder\node_modules\_math-interval-parser@1.1.0@math-interval-parser\node_modules\xregexp - mkdirp@0.5.1 node_modules\uirecorder\node_modules\_cmd-shim@2.0.2@cmd-shim\node_modules\mkdirp - mkdirp@0.5.1 node_modules\uirecorder\node_modules\_extract-zip@1.6.7@extract-zip\node_modules\mkdirp - mkdirp@0.5.1 node_modules\uirecorder\node_modules\_fstream@1.0.11@fstream\node_modules\mkdirp - any-promise@1.3.0 node_modules\uirecorder\node_modules\_mz@2.7.0@mz\node_modules\any-promise - object-assign@4.1.1 node_modules\uirecorder\node_modules\_mz@2.7.0@mz\node_modules\object-assign - jszip@2.5.0 node_modules\uirecorder\node_modules\_node-zip@1.1.1@node-zip\node_modules\jszip - node-zip@1.1.1 node_modules\uirecorder\node_modules\_jwebdriver@2.2.6@jwebdriver\node_modules\node-zip - wrappy@1.0.2 node_modules\uirecorder\node_modules\_once@1.4.0@once\node_modules\wrappy - once@1.4.0 node_modules\uirecorder\node_modules\_end-of-stream@1.4.1@end-of-stream\node_modules\once - glob@7.1.4 node_modules\uirecorder\node_modules\_globby@6.1.0@globby\node_modules\glob - mimic-fn@1.2.0 node_modules\uirecorder\node_modules\_onetime@2.0.1@onetime\node_modules\mimic-fn - cli-spinners@1.3.1 node_modules\uirecorder\node_modules\_ora@1.4.0@ora\node_modules\cli-spinners - log-symbols@2.2.0 node_modules\uirecorder\node_modules\_ora@1.4.0@ora\node_modules\log-symbols - minimist@1.2.0 node_modules\uirecorder\node_modules\_osx-release@1.1.0@osx-release\node_modules\minimist - pinkie-promise@2.0.1 node_modules\uirecorder\node_modules\_globby@6.1.0@globby\node_modules\pinkie-promise - pinkie-promise@2.0.1 node_modules\uirecorder\node_modules\_har-validator@2.0.6@har-validator\node_modules\pinkie-promise - co@4.6.0 node_modules\uirecorder\node_modules\_promiseclass@1.0.3@promiseclass\node_modules\co - promiseclass@1.0.3 node_modules\uirecorder\node_modules\_jwebdriver@2.2.6@jwebdriver\node_modules\promiseclass - core-util-is@1.0.2 node_modules\uirecorder\node_modules\_readable-stream@2.3.6@readable-stream\node_modules\core-util-is - inherits@2.0.3 node_modules\uirecorder\node_modules\_readable-stream@2.3.6@readable-stream\node_modules\inherits - isarray@1.0.0 node_modules\uirecorder\node_modules\_readable-stream@2.3.6@readable-stream\node_modules\isarray - process-nextick-args@2.0.0 node_modules\uirecorder\node_modules\_readable-stream@2.3.6@readable-stream\node_modules\process-nextick-args - safe-buffer@5.1.2 node_modules\uirecorder\node_modules\_readable-stream@2.3.6@readable-stream\node_modules\safe-buffer - util-deprecate@1.0.2 node_modules\uirecorder\node_modules\_readable-stream@2.3.6@readable-stream\node_modules\util-deprecate - stringstream@0.0.6 node_modules\uirecorder\node_modules\_request@2.79.0@request\node_modules\stringstream - jpeg-js@0.2.0 node_modules\uirecorder\node_modules\_resemblejs-node@1.0.0@resemblejs-node\node_modules\jpeg-js - pngjs@3.2.0 node_modules\uirecorder\node_modules\_resemblejs-node@1.0.0@resemblejs-node\node_modules\pngjs - cli-cursor@2.1.0 node_modules\uirecorder\node_modules\_ora@1.4.0@ora\node_modules\cli-cursor - rimraf@2.6.3 node_modules\uirecorder\node_modules\_fs-extra@0.26.7@fs-extra\node_modules\rimraf - rimraf@2.6.3 node_modules\uirecorder\node_modules\_fstream@1.0.11@fstream\node_modules\rimraf - is-promise@2.1.0 node_modules\uirecorder\node_modules\_run-async@2.3.0@run-async\node_modules\is-promise - debug@2.6.9 node_modules\uirecorder\node_modules\_runscript@1.3.0@runscript\node_modules\debug - is-type-of@1.2.1 node_modules\uirecorder\node_modules\_runscript@1.3.0@runscript\node_modules\is-type-of - graceful-fs@4.1.15 node_modules\uirecorder\node_modules\_safefs@3.2.2@safefs\node_modules\graceful-fs - hoek@2.16.3 node_modules\uirecorder\node_modules\_sntp@1.0.9@sntp\node_modules\hoek - hawk@3.1.3 node_modules\uirecorder\node_modules\_request@2.79.0@request\node_modules\hawk - asn1@0.2.4 node_modules\uirecorder\node_modules\_sshpk@1.16.1@sshpk\node_modules\asn1 - assert-plus@1.0.0 node_modules\uirecorder\node_modules\_sshpk@1.16.1@sshpk\node_modules\assert-plus - bcrypt-pbkdf@1.0.2 node_modules\uirecorder\node_modules\_sshpk@1.16.1@sshpk\node_modules\bcrypt-pbkdf - dashdash@1.14.1 node_modules\uirecorder\node_modules\_sshpk@1.16.1@sshpk\node_modules\dashdash - ecc-jsbn@0.1.2 node_modules\uirecorder\node_modules\_sshpk@1.16.1@sshpk\node_modules\ecc-jsbn - getpass@0.1.7 node_modules\uirecorder\node_modules\_sshpk@1.16.1@sshpk\node_modules\getpass - jsbn@0.1.1 node_modules\uirecorder\node_modules\_sshpk@1.16.1@sshpk\node_modules\jsbn - safer-buffer@2.1.2 node_modules\uirecorder\node_modules\_sshpk@1.16.1@sshpk\node_modules\safer-buffer - tweetnacl@0.14.5 node_modules\uirecorder\node_modules\_sshpk@1.16.1@sshpk\node_modules\tweetnacl - string_decoder@1.1.1 node_modules\uirecorder\node_modules\_readable-stream@2.3.6@readable-stream\node_modules\string_decoder - readable-stream@2.3.6 node_modules\uirecorder\node_modules\_are-we-there-yet@1.1.5@are-we-there-yet\node_modules\readable-stream - concat-stream@1.6.2 node_modules\uirecorder\node_modules\_extract-zip@1.6.7@extract-zip\node_modules\concat-stream - readable-stream@2.3.6 node_modules\uirecorder\node_modules\_duplexer2@0.1.4@duplexer2\node_modules\readable-stream - code-point-at@1.1.0 node_modules\uirecorder\node_modules\_string-width@1.0.2@string-width\node_modules\code-point-at - ansi-regex@2.1.1 node_modules\uirecorder\node_modules\_strip-ansi@3.0.1@strip-ansi\node_modules\ansi-regex - strip-ansi@3.0.1 node_modules\uirecorder\node_modules\_chalk@1.1.3@chalk\node_modules\strip-ansi - chalk@1.1.3 node_modules\uirecorder\node_modules\_har-validator@2.0.6@har-validator\node_modules\chalk - strip-ansi@3.0.1 node_modules\uirecorder\node_modules\_gauge@2.7.4@gauge\node_modules\strip-ansi - supports-color@5.5.0 node_modules\uirecorder\node_modules\_chalk@2.4.2@chalk\node_modules\supports-color - chalk@2.4.2 node_modules\uirecorder\node_modules\_ora@1.4.0@ora\node_modules\chalk - any-promise@1.3.0 node_modules\uirecorder\node_modules\_thenify@3.3.0@thenify\node_modules\any-promise - thenify-all@1.6.0 node_modules\uirecorder\node_modules\_mz@2.7.0@mz\node_modules\thenify-all - enable@1.3.2 node_modules\uirecorder\node_modules\_thunkify-wrap@1.0.4@thunkify-wrap\node_modules\enable - os-tmpdir@1.0.2 node_modules\uirecorder\node_modules\_tmp@0.0.33@tmp\node_modules\os-tmpdir - tmp@0.0.33 node_modules\uirecorder\node_modules\_external-editor@2.2.0@external-editor\node_modules\tmp - safe-buffer@5.1.2 node_modules\uirecorder\node_modules\_tunnel-agent@0.6.0@tunnel-agent\node_modules\safe-buffer - prelude-ls@1.1.2 node_modules\uirecorder\node_modules\_type-check@0.3.2@type-check\node_modules\prelude-ls - type-check@0.3.2 node_modules\uirecorder\node_modules\_levn@0.3.0@levn\node_modules\type-check - optionator@0.8.2 node_modules\uirecorder\node_modules\_escodegen@1.11.1@escodegen\node_modules\optionator - escodegen@1.11.1 node_modules\uirecorder\node_modules\_degenerator@1.0.4@degenerator\node_modules\escodegen - editions@2.1.3 node_modules\uirecorder\node_modules\_typechecker@4.7.0@typechecker\node_modules\editions - is-typedarray@1.0.0 node_modules\uirecorder\node_modules\_typedarray-to-buffer@3.0.5@typedarray-to-buffer\node_modules\is-typedarray - punycode@2.1.1 node_modules\uirecorder\node_modules\_uri-js@4.2.2@uri-js\node_modules\punycode - any-promise@1.3.0 node_modules\uirecorder\node_modules\_urllib@2.34.0@urllib\node_modules\any-promise - content-type@1.0.4 node_modules\uirecorder\node_modules\_urllib@2.34.0@urllib\node_modules\content-type - debug@2.6.9 node_modules\uirecorder\node_modules\_urllib@2.34.0@urllib\node_modules\debug - digest-header@0.0.1 node_modules\uirecorder\node_modules\_urllib@2.34.0@urllib\node_modules\digest-header - ee-first@1.1.1 node_modules\uirecorder\node_modules\_urllib@2.34.0@urllib\node_modules\ee-first - formstream@1.1.0 node_modules\uirecorder\node_modules\_urllib@2.34.0@urllib\node_modules\formstream - humanize-ms@1.2.1 node_modules\uirecorder\node_modules\_urllib@2.34.0@urllib\node_modules\humanize-ms - iconv-lite@0.4.24 node_modules\uirecorder\node_modules\_urllib@2.34.0@urllib\node_modules\iconv-lite - ip@1.1.5 node_modules\uirecorder\node_modules\_urllib@2.34.0@urllib\node_modules\ip - proxy-agent@3.1.0 node_modules\uirecorder\node_modules\_urllib@2.34.0@urllib\node_modules\proxy-agent - pump@3.0.0 node_modules\uirecorder\node_modules\_urllib@2.34.0@urllib\node_modules\pump - qs@6.7.0 node_modules\uirecorder\node_modules\_urllib@2.34.0@urllib\node_modules\qs - statuses@1.5.0 node_modules\uirecorder\node_modules\_urllib@2.34.0@urllib\node_modules\statuses - address@1.1.0 node_modules\uirecorder\node_modules\_utility@0.1.11@utility\node_modules\address - utility@1.16.1 node_modules\uirecorder\node_modules\_urllib@2.34.0@urllib\node_modules\utility - verror@1.10.0 node_modules\uirecorder\node_modules\_jsprim@1.4.1@jsprim\node_modules\verror - which@1.3.1 node_modules\uirecorder\node_modules\_cross-spawn@4.0.2@cross-spawn\node_modules\which - cross-spawn@4.0.2 node_modules\uirecorder\node_modules\_gm@1.23.0@gm\node_modules\cross-spawn - gm@1.23.0 node_modules\uirecorder\node_modules\_jwebdriver@2.2.6@jwebdriver\node_modules\gm - wide-align@1.1.3 node_modules\uirecorder\node_modules\_gauge@2.7.4@gauge\node_modules\wide-align - os-name@1.0.3 node_modules\uirecorder\node_modules\_default-user-agent@1.0.0@default-user-agent\node_modules\os-name - default-user-agent@1.0.0 node_modules\uirecorder\node_modules\_urllib@2.34.0@urllib\node_modules\default-user-agent - yauzl@2.4.1 node_modules\uirecorder\node_modules\_extract-zip@1.6.7@extract-zip\node_modules\yauzl - _@types_node@8.10.48@@types node_modules\uirecorder\node_modules\_@types_node@8.10.48@@types C:\Users\yl\AppData\Roaming\npm `-- uirecorder@2.6.0 +-- async@2.1.2 | `-- lodash@4.17.11 +-- chai@3.5.0 | `-- type-detect@1.0.0 +-- chromedriver@2.46.0 | +-- del@3.0.0 | | +-- globby@6.1.0 | | | +-- array-union@1.0.2 | | | | `-- array-uniq@1.0.3 | | | +-- glob@7.1.4 deduped | | | +-- object-assign@4.1.1 deduped | | | `-- pinkie-promise@2.0.1 | | +-- is-path-cwd@1.0.0 | | +-- is-path-in-cwd@1.0.1 | | | `-- is-path-inside@1.0.1 | | | `-- path-is-inside@1.0.2 | | +-- p-map@1.2.0 | | +-- pify@3.0.0 | | `-- rimraf@2.6.3 deduped | +-- extract-zip@1.6.7 | | +-- concat-stream@1.6.2 | | | +-- buffer-from@1.1.1 | | | +-- inherits@2.0.3 deduped | | | +-- readable-stream@2.3.6 | | | | +-- core-util-is@1.0.2 deduped | | | | +-- inherits@2.0.3 deduped | | | | +-- isarray@1.0.0 | | | | +-- process-nextick-args@2.0.0 | | | | `-- string_decoder@1.1.1 | | | `-- typedarray@0.0.6 | | +-- debug@2.6.9 deduped | | +-- mkdirp@0.5.1 deduped | | `-- yauzl@2.4.1 | | `-- fd-slicer@1.0.1 | | `-- pend@1.2.0 | +-- mkdirp@0.5.1 | | `-- minimist@0.0.8 | +-- request@2.88.0 | | +-- aws-sign2@0.7.0 | | +-- caseless@0.12.0 | | +-- combined-stream@1.0.8 | | | `-- delayed-stream@1.0.0 | | +-- form-data@2.3.3 | | | +-- asynckit@0.4.0 | | | `-- mime-types@2.1.24 deduped | | +-- har-validator@5.1.3 | | | +-- ajv@6.10.0 | | | | +-- fast-deep-equal@2.0.1 | | | | `-- uri-js@4.2.2 | | | | `-- punycode@2.1.1 | | | `-- har-schema@2.0.0 | | +-- http-signature@1.2.0 | | | +-- jsprim@1.4.1 | | | | +-- json-schema@0.2.3 | | | | `-- verror@1.10.0 | | | | `-- core-util-is@1.0.2 deduped | | | `-- sshpk@1.16.1 | | | +-- asn1@0.2.4 | | | +-- dashdash@1.14.1 | | | +-- ecc-jsbn@0.1.2 | | | | `-- jsbn@0.1.1 deduped | | | +-- getpass@0.1.7 | | | `-- jsbn@0.1.1 | | +-- is-typedarray@1.0.0 | | +-- mime-types@2.1.24 | | | `-- mime-db@1.40.0 | | +-- oauth-sign@0.9.0 | | +-- qs@6.5.2 | | +-- tough-cookie@2.4.3 | | `-- uuid@3.3.2 deduped | `-- tcp-port-used@1.0.1 | +-- debug@4.1.0 | | `-- ms@2.1.1 | `-- is2@2.0.1 | +-- deep-is@0.1.3 | +-- ip-regex@2.1.0 | `-- is-url@1.2.4 +-- co@4.6.0 +-- commander@2.9.0 +-- fs-extra@1.0.0 | +-- graceful-fs@4.1.15 | +-- jsonfile@2.4.0 | | `-- graceful-fs@4.1.15 deduped | `-- klaw@1.3.1 | `-- graceful-fs@4.1.15 deduped +-- i18n@0.8.3 | +-- debug@2.6.9 | | `-- ms@2.0.0 deduped | +-- math-interval-parser@1.1.0 | | `-- xregexp@2.0.0 | +-- messageformat@0.3.1 | | +-- glob@6.0.4 | | | +-- inflight@1.0.6 | | | | `-- wrappy@1.0.2 | | | +-- inherits@2.0.3 deduped | | | +-- minimatch@3.0.4 | | | +-- once@1.4.0 | | | | `-- wrappy@1.0.2 deduped | | | `-- path-is-absolute@1.0.1 | | +-- nopt@3.0.6 | | | `-- abbrev@1.1.1 | | `-- watchr@2.4.13 | | +-- eachr@2.0.4 | | | `-- typechecker@2.1.0 deduped | | +-- extendr@2.1.0 | | +-- ignorefs@1.2.0 | | | `-- editions@1.3.4 | | +-- safefs@3.2.2 | | | `-- graceful-fs@4.1.15 deduped | | +-- scandirectory@2.5.0 | | | +-- ignorefs@1.2.0 deduped | | | `-- taskgroup@4.3.1 deduped | | +-- taskgroup@4.3.1 | | | `-- ambi@2.5.0 | | | +-- editions@1.3.4 deduped | | | `-- typechecker@4.7.0 | | | `-- editions@2.1.3 | | | +-- errlop@1.1.1 | | | | `-- editions@2.1.3 | | | | +-- errlop@1.1.1 deduped | | | | `-- semver@5.7.0 | | | `-- semver@5.7.0 | | `-- typechecker@2.1.0 | `-- mustache@3.0.1 +-- inquirer@3.0.1 | +-- chalk@1.1.3 | | +-- has-ansi@2.0.0 | | | `-- ansi-regex@2.1.1 deduped | | `-- supports-color@2.0.0 | +-- cli-cursor@2.1.0 | | `-- restore-cursor@2.0.0 | | `-- signal-exit@3.0.2 | +-- external-editor@2.2.0 | | +-- chardet@0.4.2 | | `-- iconv-lite@0.4.24 | +-- figures@2.0.0 | +-- lodash@4.17.11 deduped | +-- mute-stream@0.0.7 | +-- run-async@2.3.0 | | `-- is-promise@2.1.0 | +-- string-width@2.1.1 | | `-- strip-ansi@4.0.0 | | `-- ansi-regex@3.0.0 | `-- strip-ansi@3.0.1 | `-- ansi-regex@2.1.1 +-- jwebdriver@2.3.0 | +-- gm@1.23.0 | | +-- array-series@0.1.5 | | +-- cross-spawn@4.0.2 | | | +-- lru-cache@4.1.5 | | | `-- which@1.3.1 deduped | | `-- debug@2.2.0 | | `-- ms@0.7.1 | +-- node-zip@1.1.1 | | `-- jszip@2.5.0 | | `-- pako@0.2.9 | +-- promiseclass@1.0.3 | | `-- co@4.6.0 deduped | +-- request@2.79.0 | | +-- aws-sign2@0.6.0 | | +-- caseless@0.11.0 | | +-- form-data@2.1.4 | | | +-- asynckit@0.4.0 deduped | | | `-- mime-types@2.1.24 deduped | | +-- har-validator@2.0.6 | | | +-- commander@2.9.0 deduped | | | +-- is-my-json-valid@2.20.0 | | | | +-- generate-function@2.3.1 | | | | | `-- is-property@1.0.2 | | | | +-- generate-object-property@1.2.0 | | | | | `-- is-property@1.0.2 deduped | | | | +-- is-my-ip-valid@1.0.0 | | | | `-- xtend@4.0.1 deduped | | | `-- pinkie-promise@2.0.1 deduped | | +-- hawk@3.1.3 | | | +-- boom@2.10.1 | | | | `-- hoek@2.16.3 deduped | | | +-- hoek@2.16.3 | | | `-- sntp@1.0.9 | | | `-- hoek@2.16.3 deduped | | +-- http-signature@1.1.1 | | | `-- assert-plus@0.2.0 | | +-- is-typedarray@1.0.0 deduped | | +-- mime-types@2.1.24 deduped | | +-- oauth-sign@0.8.2 | | +-- qs@6.3.2 | | +-- stringstream@0.0.6 | | +-- tough-cookie@2.3.4 | | | `-- punycode@1.4.1 | | +-- tunnel-agent@0.4.3 | | `-- uuid@3.3.2 deduped | `-- xtend@4.0.1 +-- latest-version@2.0.0 | `-- package-json@2.4.0 | +-- got@5.7.1 | | +-- create-error-class@3.0.2 | | | `-- capture-stack-trace@1.0.1 | | +-- is-redirect@1.0.0 | | +-- is-retry-allowed@1.1.0 | | +-- lowercase-keys@1.0.1 | | +-- object-assign@4.1.1 deduped | | +-- parse-json@2.2.0 | | +-- pinkie-promise@2.0.1 deduped | | +-- read-all-stream@3.1.0 | | | `-- pinkie-promise@2.0.1 deduped | | +-- timed-out@3.1.3 | | +-- unzip-response@1.0.2 | | `-- url-parse-lax@1.0.0 | +-- registry-auth-token@3.4.0 | | `-- rc@1.2.8 | | `-- deep-extend@0.6.0 | +-- registry-url@3.1.0 | | `-- rc@1.2.8 deduped | `-- semver@5.3.0 deduped +-- npminstall@3.1.1 | +-- agentkeepalive@3.5.2 | | `-- humanize-ms@1.2.1 | | `-- ms@2.0.0 deduped | +-- await-event@2.1.0 | +-- binary-mirror-config@1.20.0 | +-- bytes@2.5.0 | +-- cmd-shim@2.0.2 | | +-- graceful-fs@4.1.15 deduped | | `-- mkdirp@0.5.1 deduped | +-- co@4.6.0 deduped | +-- co-fs-extra@1.2.1 | | +-- co-from-stream@0.0.0 | | +-- fs-extra@0.26.7 | | | +-- graceful-fs@4.1.15 deduped | | | +-- klaw@1.3.1 deduped | | | +-- path-is-absolute@1.0.1 deduped | | | `-- rimraf@2.6.3 deduped | | `-- thunkify-wrap@1.0.4 | | `-- enable@1.3.2 | +-- debug@2.6.9 deduped | +-- mkdirp@0.5.1 deduped | +-- ms@2.0.0 | +-- mz@2.7.0 | | +-- any-promise@1.3.0 | | +-- object-assign@4.1.1 | | `-- thenify-all@1.6.0 | | `-- thenify@3.3.0 | | `-- any-promise@1.3.0 deduped | +-- node-gyp@3.8.0 | | +-- fstream@1.0.12 | | | +-- graceful-fs@4.1.15 deduped | | | +-- inherits@2.0.3 deduped | | | +-- mkdirp@0.5.1 deduped | | | `-- rimraf@2.6.3 deduped | | +-- glob@7.1.4 | | | +-- fs.realpath@1.0.0 | | | +-- inflight@1.0.6 deduped | | | +-- inherits@2.0.3 deduped | | | +-- minimatch@3.0.4 deduped | | | `-- path-is-absolute@1.0.1 deduped | | +-- graceful-fs@4.1.15 deduped | | +-- mkdirp@0.5.1 deduped | | +-- nopt@3.0.6 deduped | | +-- npmlog@4.1.2 | | | +-- are-we-there-yet@1.1.5 | | | | `-- delegates@1.0.0 | | | `-- gauge@2.7.4 | | | +-- has-unicode@2.0.1 | | | +-- object-assign@4.1.1 deduped | | | +-- signal-exit@3.0.2 deduped | | | +-- string-width@1.0.2 | | | | `-- is-fullwidth-code-point@1.0.0 | | | `-- wide-align@1.1.3 | | | `-- string-width@2.1.1 deduped | | +-- osenv@0.1.5 | | | `-- os-homedir@1.0.2 | | +-- request@2.88.0 deduped | | +-- rimraf@2.6.3 deduped | | +-- semver@5.3.0 deduped | | +-- tar@2.2.2 deduped | | `-- which@1.3.1 | | `-- isexe@2.0.0 | +-- normalize-package-data@2.5.0 | | +-- resolve@1.10.1 | | +-- semver@5.3.0 deduped | | `-- validate-npm-package-license@3.0.4 | | +-- spdx-correct@3.1.0 | | | +-- spdx-expression-parse@3.0.0 deduped | | | `-- spdx-license-ids@3.0.4 | | `-- spdx-expression-parse@3.0.0 | | `-- spdx-license-ids@3.0.4 deduped | +-- npm-package-arg@4.2.1 | | `-- semver@5.3.0 deduped | +-- ora@1.4.0 | | +-- chalk@2.4.2 | | | +-- ansi-styles@3.2.1 | | | | `-- color-convert@1.9.3 | | | | `-- color-name@1.1.3 | | | `-- supports-color@5.5.0 | | +-- cli-cursor@2.1.0 deduped | | +-- cli-spinners@1.3.1 | | `-- log-symbols@2.2.0 | | `-- chalk@2.4.2 | | +-- ansi-styles@3.2.1 | | | `-- color-convert@1.9.3 deduped | | `-- supports-color@5.5.0 | +-- rimraf@2.6.3 | | `-- glob@7.1.4 deduped | +-- runscript@1.3.0 | | +-- debug@2.6.9 deduped | | `-- is-type-of@1.2.1 | | `-- core-util-is@1.0.2 | +-- semver@5.3.0 deduped | +-- tar@2.2.2 | | +-- block-stream@0.0.9 | | | `-- inherits@2.0.3 deduped | | `-- inherits@2.0.3 | +-- urllib@2.34.0 | | +-- any-promise@1.3.0 deduped | | +-- debug@2.6.9 deduped | | +-- default-user-agent@1.0.0 | | | `-- os-name@1.0.3 | | | `-- win-release@1.1.1 | | | `-- semver@5.3.0 deduped | | +-- digest-header@0.0.1 | | | `-- utility@0.1.11 | | | `-- address@1.1.0 | | +-- ee-first@1.1.1 | | +-- formstream@1.1.0 | | | +-- mime@1.6.0 | | | `-- pause-stream@0.0.11 | | +-- iconv-lite@0.4.24 deduped | | +-- proxy-agent@3.1.0 | | | +-- agent-base@4.2.1 | | | | `-- es6-promisify@5.0.0 | | | +-- debug@3.2.6 | | | | `-- ms@2.1.1 | | | +-- http-proxy-agent@2.1.0 | | | | `-- debug@3.1.0 | | | | `-- ms@2.0.0 deduped | | | +-- https-proxy-agent@2.2.1 | | | | `-- debug@3.2.6 | | | | `-- ms@2.1.1 | | | +-- lru-cache@4.1.5 deduped | | | +-- pac-proxy-agent@3.0.0 | | | | +-- debug@3.2.6 | | | | | `-- ms@2.1.1 | | | | +-- get-uri@2.0.3 | | | | | +-- data-uri-to-buffer@2.0.1 | | | | | +-- debug@4.1.1 | | | | | | `-- ms@2.1.1 | | | | | +-- file-uri-to-path@1.0.0 | | | | | +-- ftp@0.3.10 | | | | | | +-- readable-stream@1.1.14 | | | | | | | +-- core-util-is@1.0.2 deduped | | | | | | | +-- inherits@2.0.3 deduped | | | | | | | +-- isarray@0.0.1 | | | | | | | `-- string_decoder@0.10.31 | | | | | | `-- xregexp@2.0.0 deduped | | | | | `-- readable-stream@3.3.0 | | | | | +-- inherits@2.0.3 deduped | | | | | `-- string_decoder@1.1.1 deduped | | | | +-- http-proxy-agent@2.1.0 deduped | | | | +-- https-proxy-agent@2.2.1 deduped | | | | +-- pac-resolver@3.0.0 | | | | | +-- co@4.6.0 deduped | | | | | +-- degenerator@1.0.4 | | | | | | `-- escodegen@1.11.1 | | | | | | +-- esutils@2.0.2 | | | | | | +-- optionator@0.8.2 | | | | | | | +-- deep-is@0.1.3 deduped | | | | | | | +-- levn@0.3.0 | | | | | | | | `-- prelude-ls@1.1.2 deduped | | | | | | | +-- prelude-ls@1.1.2 | | | | | | | +-- type-check@0.3.2 | | | | | | | | `-- prelude-ls@1.1.2 deduped | | | | | | | `-- wordwrap@1.0.0 | | | | | | `-- source-map@0.6.1 | | | | | `-- thunkify@2.1.2 | | | | +-- raw-body@2.4.0 | | | | | +-- http-errors@1.7.2 | | | | | | +-- depd@1.1.2 | | | | | | +-- inherits@2.0.3 deduped | | | | | | +-- setprototypeof@1.1.1 | | | | | | `-- statuses@1.5.0 deduped | | | | | `-- iconv-lite@0.4.24 deduped | | | | `-- socks-proxy-agent@4.0.2 deduped | | | +-- proxy-from-env@1.0.0 | | | `-- socks-proxy-agent@4.0.2 | | | `-- socks@2.3.2 | | +-- pump@3.0.0 | | +-- qs@6.5.2 deduped | | +-- statuses@1.5.0 | | `-- utility@1.16.1 deduped | +-- utility@1.16.1 | | +-- escape-html@1.0.3 | | +-- mkdirp@0.5.1 deduped | | `-- unescape@1.0.1 | | `-- extend-shallow@2.0.1 | `-- uuid@3.3.2 +-- os-locale@1.4.0 | `-- lcid@1.0.0 | `-- invert-kv@1.0.0 +-- semver@5.3.0 `-- websocket@1.0.22 +-- debug@2.2.0 | `-- ms@0.7.1 +-- typedarray-to-buffer@3.0.5 | `-- is-typedarray@1.0.0 deduped `-- yaeti@0.0.6 C:\Users\yl>app-inspector -u WTKDU17111000609 --verbose C:\Users\yl>npm install app-inspector -g npm WARN deprecated tough-cookie@2.2.2: ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130 npm WARN deprecated hawk@3.1.3: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs an d critical security issues. npm WARN deprecated node-uuid@1.4.8: Use uuid module instead npm WARN deprecated boom@2.10.1: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commerc ial). npm WARN deprecated cryptiles@2.0.5: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest ver sion to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/com mercial). npm WARN deprecated sntp@1.0.9: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs an d critical security issues. npm WARN deprecated hoek@2.16.3: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commerc ial). npm WARN deprecated node-uuid@1.4.7: Use uuid module instead C:\Users\yl\AppData\Roaming\npm\app-inspector -> C:\Users\yl\AppData\Roaming\npm\node_modules\app-inspector\bin\app-inspector.js C:\Users\yl\AppData\Roaming\npm\inspector -> C:\Users\yl\AppData\Roaming\npm\node_modules\app-inspector\bin\app-inspector.js C:\Users\yl\AppData\Roaming\npm `-- app-inspector@2.0.24 npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\app-inspector\node_modules\chokidar\node_modules\fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}) npm WARN react-syntax-highlighter@7.0.4 requires a peer of react@>= 0.14.0 but none was installed.
---------------------------------------------------------------------
"记录"是见证成长;"成长"则意味着蜕变;“变",创造无限可能。
欢迎关注个人微信公众号,一起进步!扫描下方二维码即可
公众号回复指定关键字可获得视频教程资料
![](https://www.cnblogs.com/images/cnblogs_com/wysk/1536678/t_%E6%89%AB%E7%A0%81_%E6%90%9C%E7%B4%A2%E8%81%94%E5%90%88%E4%BC%A0%E6%92%AD%E6%A0%B7%E5%BC%8F-%E6%A0%87%E5%87%86%E8%89%B2%E7%89%88.png)