- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 Ubuntu 上安装 appium 时遇到问题。我尝试了正常的 apt-get 安装方式,发现我不应该这样做。因此,我从 apt-get 卸载了 node 和 appium,并尝试了这些线程中列出的指令的变体
How to setup Appium in Ubuntu for android
How to install and run appium in linux?
我做了以下事情
安装rvm
\curl -sSL https://get.rvm.io | bash -s stable --ruby
使用rvm安装ruby
rvm安装2.2.3
在终端模拟器的选项中使我的 shell 成为登录 shell(我使用的是终结者,而不是常规终端)rvm 表示要执行此操作,而不是 rvm --default use 2.2.3
当我尝试运行 rvm --default 时。通过安装rvm安装的ruby是2.2.1,所以此时我使用的是2.2.1的Ruby。
从其他问题线程安装依赖包。我这样做是因为另一个线程这样做了。
sudo apt-get install build-essential curl m4 texinfo libbz2-dev libcurl4-openssl-dev libexpat-dev libncurses-dev zlib1g-dev
从这里安装 Linux Homebrew 软件 https://github.com/Homebrew/linuxbrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/linuxbrew/go/install)"
启动并运行 Linux Homebrew 程序
brew doctor
brew install git
(我必须这样做,因为brew医生说我的git太旧了)
安装node的依赖包。我必须这样做,因为当我尝试运行 brew install node
时,它失败并出现有关缺少头文件的编译错误。当我用谷歌搜索该文件名时,有人提到这是该文件所需的包
sudo apt-get install libx11-dev
使用brew 安装gcc。我必须这样做,因为在安装软件包后尝试 brew install node
后,我遇到了进一步的编译错误。我在 homebrew github https://github.com/Homebrew/linuxbrew/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+node 上查找了 Node 的错误还有这个错误https://github.com/Homebrew/linuxbrew/issues/597说用gcc 5安装node。当我尝试这个命令时,它说我的gcc太旧了(它是4.6)并用brew安装gcc5。
brew 安装 gcc
安装 Node
brew 安装 Node --cc=gcc-5
此时brew和node已经安装完毕。然后我尝试安装appium。无论是全局的还是非全局的,它们都失败了,并出现了一系列巨大的编译错误。 (我不知道如何使 stackoverflow 的事情只是将代码作为原始文本)。当然,此时我已经束手无策了,我不知道如何让node正确编译appium。我不知道如何阅读这些编译错误并追踪其真正的根本原因。我将在 Node 和 Appium 上提交一个错误并将其粘贴回此处。任何帮助将不胜感激。
username@redacted:~$ npm install -g appium
npm WARN optional dep failed, continuing udidetect@1.0.7
npm WARN engine xmlbuilder@2.2.1: wanted: {"node":"0.8.x || 0.10.x"} (current: {"node":"4.2.1","npm":"2.14.7"})
> bufferutil@1.1.0 install /home/username/.linuxbrew/lib/node_modules/appium/node_modules/ws/node_modules/bufferutil
> node-gyp rebuild
make: Entering directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/ws/node_modules/bufferutil/build'
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
In file included from ../src/bufferutil.cc:16:0:
../node_modules/nan/nan.h:261:25: error: redefinition of 'template<class T> v8::Local<T> _NanEnsureLocal(v8::Local<T>)'
NAN_INLINE v8::Local<T> _NanEnsureLocal(v8::Local<T> val) {
^
../node_modules/nan/nan.h:256:25: note: 'template<class T> v8::Local<T> _NanEnsureLocal(v8::Handle<T>)' previously declared here
NAN_INLINE v8::Local<T> _NanEnsureLocal(v8::Handle<T> val) {
^
../node_modules/nan/nan.h:661:13: error: 'node::smalloc' has not been declared
, node::smalloc::FreeCallback callback
^
../node_modules/nan/nan.h:661:35: error: expected ',' or '...' before 'callback'
, node::smalloc::FreeCallback callback
^
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(char*, size_t, int)':
../node_modules/nan/nan.h:665:50: error: 'callback' was not declared in this scope
v8::Isolate::GetCurrent(), data, length, callback, hint);
^
../node_modules/nan/nan.h:665:60: error: 'hint' was not declared in this scope
v8::Isolate::GetCurrent(), data, length, callback, hint);
^
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(const char*, uint32_t)':
../node_modules/nan/nan.h:672:67: error: no matching function for call to 'New(v8::Isolate*, const char*&, uint32_t&)'
return node::Buffer::New(v8::Isolate::GetCurrent(), data, size);
^
In file included from ../src/bufferutil.cc:10:0:
/home/username/.node-gyp/4.2.1/include/node/node_buffer.h:31:40: note: candidate: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, v8::Local<v8::String>, node::encoding) <near match>
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
^
/home/username/.node-gyp/4.2.1/include/node/node_buffer.h:31:40: note: conversion of argument 3 would be ill-formed:
In file included from ../src/bufferutil.cc:16:0:
../node_modules/nan/nan.h:672:67: error: invalid conversion from 'uint32_t {aka unsigned int}' to 'node::encoding' [-fpermissive]
return node::Buffer::New(v8::Isolate::GetCurrent(), data, size);
^
In file included from ../src/bufferutil.cc:10:0:
/home/username/.node-gyp/4.2.1/include/node/node_buffer.h:43:40: note: candidate: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, char*, size_t) <near match>
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
^
/home/username/.node-gyp/4.2.1/include/node/node_buffer.h:43:40: note: conversion of argument 2 would be ill-formed:
In file included from ../src/bufferutil.cc:16:0:
../node_modules/nan/nan.h:672:67: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
return node::Buffer::New(v8::Isolate::GetCurrent(), data, size);
^
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(uint32_t)':
../node_modules/nan/nan.h:676:29: error: could not convert 'node::Buffer::New(v8::Isolate::GetCurrent(), ((size_t)size))' from 'v8::MaybeLocal<v8::Object>' to 'v8::Local<v8::Object>'
return node::Buffer::New(v8::Isolate::GetCurrent(), size);
^
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanBufferUse(char*, uint32_t)':
../node_modules/nan/nan.h:683:12: error: 'Use' is not a member of 'node::Buffer'
return node::Buffer::Use(v8::Isolate::GetCurrent(), data, size);
^
make: *** [Release/obj.target/bufferutil/src/bufferutil.o] Error 1
make: Leaving directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/ws/node_modules/bufferutil/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/home/username/.linuxbrew/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 3.13.0-66-generic
gyp ERR! command "/home/username/.linuxbrew/Cellar/node/4.2.1/bin/node" "/home/username/.linuxbrew/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/username/.linuxbrew/lib/node_modules/appium/node_modules/ws/node_modules/bufferutil
gyp ERR! node -v v4.2.1
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok
> utf-8-validate@1.1.0 install /home/username/.linuxbrew/lib/node_modules/appium/node_modules/ws/node_modules/utf-8-validate
> node-gyp rebuild
make: Entering directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/ws/node_modules/utf-8-validate/build'
CXX(target) Release/obj.target/validation/src/validation.o
In file included from ../src/validation.cc:15:0:
../node_modules/nan/nan.h:261:25: error: redefinition of 'template<class T> v8::Local<T> _NanEnsureLocal(v8::Local<T>)'
NAN_INLINE v8::Local<T> _NanEnsureLocal(v8::Local<T> val) {
^
../node_modules/nan/nan.h:256:25: note: 'template<class T> v8::Local<T> _NanEnsureLocal(v8::Handle<T>)' previously declared here
NAN_INLINE v8::Local<T> _NanEnsureLocal(v8::Handle<T> val) {
^
../node_modules/nan/nan.h:661:13: error: 'node::smalloc' has not been declared
, node::smalloc::FreeCallback callback
^
../node_modules/nan/nan.h:661:35: error: expected ',' or '...' before 'callback'
, node::smalloc::FreeCallback callback
^
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(char*, size_t, int)':
../node_modules/nan/nan.h:665:50: error: 'callback' was not declared in this scope
v8::Isolate::GetCurrent(), data, length, callback, hint);
^
../node_modules/nan/nan.h:665:60: error: 'hint' was not declared in this scope
v8::Isolate::GetCurrent(), data, length, callback, hint);
^
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(const char*, uint32_t)':
../node_modules/nan/nan.h:672:67: error: no matching function for call to 'New(v8::Isolate*, const char*&, uint32_t&)'
return node::Buffer::New(v8::Isolate::GetCurrent(), data, size);
^
In file included from ../src/validation.cc:10:0:
/home/username/.node-gyp/4.2.1/include/node/node_buffer.h:31:40: note: candidate: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, v8::Local<v8::String>, node::encoding) <near match>
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
^
/home/username/.node-gyp/4.2.1/include/node/node_buffer.h:31:40: note: conversion of argument 3 would be ill-formed:
In file included from ../src/validation.cc:15:0:
../node_modules/nan/nan.h:672:67: error: invalid conversion from 'uint32_t {aka unsigned int}' to 'node::encoding' [-fpermissive]
return node::Buffer::New(v8::Isolate::GetCurrent(), data, size);
^
In file included from ../src/validation.cc:10:0:
/home/username/.node-gyp/4.2.1/include/node/node_buffer.h:43:40: note: candidate: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, char*, size_t) <near match>
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
^
/home/username/.node-gyp/4.2.1/include/node/node_buffer.h:43:40: note: conversion of argument 2 would be ill-formed:
In file included from ../src/validation.cc:15:0:
../node_modules/nan/nan.h:672:67: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
return node::Buffer::New(v8::Isolate::GetCurrent(), data, size);
^
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(uint32_t)':
../node_modules/nan/nan.h:676:29: error: could not convert 'node::Buffer::New(v8::Isolate::GetCurrent(), ((size_t)size))' from 'v8::MaybeLocal<v8::Object>' to 'v8::Local<v8::Object>'
return node::Buffer::New(v8::Isolate::GetCurrent(), size);
^
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanBufferUse(char*, uint32_t)':
../node_modules/nan/nan.h:683:12: error: 'Use' is not a member of 'node::Buffer'
return node::Buffer::Use(v8::Isolate::GetCurrent(), data, size);
^
make: *** [Release/obj.target/validation/src/validation.o] Error 1
make: Leaving directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/ws/node_modules/utf-8-validate/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/home/username/.linuxbrew/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 3.13.0-66-generic
gyp ERR! command "/home/username/.linuxbrew/Cellar/node/4.2.1/bin/node" "/home/username/.linuxbrew/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/username/.linuxbrew/lib/node_modules/appium/node_modules/ws/node_modules/utf-8-validate
gyp ERR! node -v v4.2.1
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok
npm WARN optional dep failed, continuing bufferutil@1.1.0
npm WARN optional dep failed, continuing utf-8-validate@1.1.0
> utf-8-validate@1.2.1 install /home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/utf-8-validate
> node-gyp rebuild
make: Entering directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/utf-8-validate/build'
CXX(target) Release/obj.target/validation/src/validation.o
SOLINK_MODULE(target) Release/obj.target/validation.node
COPY Release/validation.node
make: Leaving directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/utf-8-validate/build'
> bufferutil@1.2.1 install /home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/bufferutil
> node-gyp rebuild
make: Entering directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/bufferutil/build'
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
SOLINK_MODULE(target) Release/obj.target/bufferutil.node
COPY Release/bufferutil.node
make: Leaving directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/bufferutil/build'
> utf-8-validate@1.2.1 install /home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/utf-8-validate
> node-gyp rebuild
make: Entering directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/utf-8-validate/build'
CXX(target) Release/obj.target/validation/src/validation.o
SOLINK_MODULE(target) Release/obj.target/validation.node
COPY Release/validation.node
make: Leaving directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/utf-8-validate/build'
> bufferutil@1.2.1 install /home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/bufferutil
> node-gyp rebuild
make: Entering directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/bufferutil/build'
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
SOLINK_MODULE(target) Release/obj.target/bufferutil.node
COPY Release/bufferutil.node
make: Leaving directory `/home/username/.linuxbrew/lib/node_modules/appium/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/bufferutil/build'
npm WARN engine hawk@0.10.2: wanted: {"node":"0.8.x"} (current: {"node":"4.2.1","npm":"2.14.7"})
npm WARN engine cryptiles@0.1.3: wanted: {"node":"0.8.x"} (current: {"node":"4.2.1","npm":"2.14.7"})
npm WARN engine sntp@0.1.4: wanted: {"node":"0.8.x"} (current: {"node":"4.2.1","npm":"2.14.7"})
npm WARN engine boom@0.3.8: wanted: {"node":"0.8.x"} (current: {"node":"4.2.1","npm":"2.14.7"})
npm WARN engine hoek@0.7.6: wanted: {"node":"0.8.x"} (current: {"node":"4.2.1","npm":"2.14.7"})
npm WARN peerDependencies The peer dependency continuation-local-storage@~3 included from cls-bluebird will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
npm WARN peerDependencies The peer dependency bluebird@>=1.0.3 included from cls-bluebird will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
/
> appium-chromedriver@2.3.2 install /home/username/.linuxbrew/lib/node_modules/appium/node_modules/appium-chromedriver
> node install-npm.js
info Chromedriver Install Opening temp file to write chromedriver_linux64 to...
info Chromedriver Install Downloading http://chromedriver.storage.googleapis.com/2.18/chromedriver_linux64.zip...
info Chromedriver Install Writing binary content to /tmp/1151012-17037-1mkrlkq/chromedriver_linux64.zip...
info Chromedriver Install Extracting /tmp/1151012-17037-1mkrlkq/chromedriver_linux64.zip to /tmp/1151012-17037-1mkrlkq/chromedriver_linux64
info Chromedriver Install Creating /home/username/.linuxbrew/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/linux...
info Chromedriver Install Copying unzipped binary, reading from /tmp/1151012-17037-1mkrlkq/chromedriver_linux64/chromedriver...
info Chromedriver Install Writing to /home/username/.linuxbrew/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/linux/chromedriver_64...
info Chromedriver Install /home/username/.linuxbrew/lib/node_modules/appium/node_modules/appium-chromedriver/chromedriver/linux/chromedriver_64 successfully put in place
/home/username/.linuxbrew/bin/appium -> /home/username/.linuxbrew/lib/node_modules/appium/bin/appium.js
/home/username/.linuxbrew/bin/appium-doctor -> /home/username/.linuxbrew/lib/node_modules/appium/bin/appium-doctor.js
/home/username/.linuxbrew/bin/authorize_ios -> /home/username/.linuxbrew/lib/node_modules/appium/bin/authorize-ios.js
appium@1.4.14 /home/username/.linuxbrew/lib/node_modules/appium
├── camel-back-promise@1.0.0
├── path@0.11.14
├── bufferpack@0.0.6
├── vargs@0.1.0
├── win-spawn@2.0.0
├── stack-trace@0.0.9
├── q@1.1.2
├── utf7@1.0.0
├── uuid-js@0.7.5
├── bytes@1.0.0
├── xpath@0.0.9
├── underscore@1.8.3
├── node-idevice@0.1.5
├── async@0.9.2
├── xmldom@0.1.19
├── rimraf@2.2.8
├── through@2.3.8
├── js2xmlparser2@0.2.0
├── bplist-parser@0.1.0
├── adm-zip@0.4.7
├── node-uuid@1.4.3
├── ncp@2.0.0
├── colors@1.0.3
├── safari-launcher@2.0.5
├── es6-promise@2.3.0
├── temp@0.8.3 (os-tmpdir@1.0.1)
├── difflib@0.2.4 (heap@0.2.6)
├── sandboxed-module@2.0.3 (require-like@0.1.2)
├── appium-atoms@0.0.5
├── which@1.2.0 (is-absolute@0.1.7)
├── mv@2.0.3 (ncp@0.6.0)
├── touch@0.0.3 (nopt@1.0.10)
├── mkdirp@0.5.1 (minimist@0.0.8)
├── morgan@1.5.3 (basic-auth@1.0.3, depd@1.0.1, on-finished@2.2.1, debug@2.2.0)
├── method-override@2.3.5 (methods@1.1.1, vary@1.0.1, parseurl@1.3.0, debug@2.2.0)
├── underscore.string@3.0.3
├── bplist-creator@0.0.6 (stream-buffers@2.2.0)
├── serve-favicon@2.2.1 (fresh@0.2.4, ms@0.7.1, parseurl@1.3.0, etag@1.6.0)
├── date-utils@1.2.17
├── glob@4.4.2 (inherits@2.0.1, inflight@1.0.4, once@1.3.2, minimatch@2.0.10)
├── npmlog@1.1.0 (ansi@0.3.0, gauge@1.1.0, are-we-there-yet@1.0.4)
├── body-parser@1.12.4 (content-type@1.0.1, depd@1.0.1, qs@2.4.2, on-finished@2.2.1, raw-body@2.0.2, iconv-lite@0.4.8, debug@2.2.0, type-is@1.6.9)
├── express@4.11.2 (utils-merge@1.0.0, merge-descriptors@0.0.2, cookie@0.1.2, fresh@0.2.4, media-typer@0.3.0, vary@1.0.1, finalhandler@0.3.3, range-parser@1.0.3, content-disposition@0.5.0, serve-static@1.8.1, methods@1.1.1, escape-html@1.0.1, cookie-signature@1.0.5, parseurl@1.3.0, path-to-regexp@0.1.3, depd@1.0.1, qs@2.3.3, on-finished@2.2.1, debug@2.1.3, send@0.11.1, proxy-addr@1.0.8, etag@1.5.1, type-is@1.5.7, accepts@1.2.13)
├── winston@0.9.0 (cycle@1.0.3, eyes@0.1.8, isstream@0.1.2, pkginfo@0.3.1)
├── ws@0.7.2 (options@0.0.6, ultron@1.0.2)
├── request@2.53.0 (forever-agent@0.5.2, aws-sign2@0.5.0, caseless@0.9.0, form-data@0.2.0, tunnel-agent@0.4.1, oauth-sign@0.6.0, stringstream@0.0.5, isstream@0.1.2, json-stringify-safe@5.0.1, tough-cookie@2.2.0, qs@2.3.3, mime-types@2.0.14, combined-stream@0.0.7, http-signature@0.10.1, bl@0.9.4, hawk@2.3.1)
├── longjohn@0.2.9 (source-map-support@0.3.2)
├── prompt@0.2.14 (revalidator@0.1.8, pkginfo@0.3.1, read@1.0.7, utile@0.2.1, winston@0.8.3)
├── grunt-cli@0.1.13 (resolve@0.3.1, nopt@1.0.10, findup-sync@0.1.3)
├── unzip@0.1.11 (setimmediate@1.0.4, readable-stream@1.0.33, pullstream@0.4.1, match-stream@0.0.2, fstream@0.1.31, binary@0.3.0)
├── swig@1.4.2 (optimist@0.6.1, uglify-js@2.4.24)
├── grunt@0.4.5 (eventemitter2@0.4.14, dateformat@1.0.2-1.2.3, which@1.0.9, async@0.1.22, colors@0.6.2, getobject@0.1.0, lodash@0.9.2, hooker@0.2.3, grunt-legacy-util@0.2.0, exit@0.1.2, coffee-script@1.3.3, iconv-lite@0.2.11, underscore.string@2.2.1, nopt@1.0.10, minimatch@0.2.14, glob@3.1.21, grunt-legacy-log@0.1.2, findup-sync@0.1.3, js-yaml@2.0.5)
├── md5calculator@0.0.3 (crypto@0.0.3, elementtree@0.1.3, unzip@0.1.8)
├── binary-cookies@0.1.1 (path@0.4.10, async@0.2.10, colors@0.6.2, underscore@1.4.4, argparse@0.1.16, winston@0.6.2)
├── appium-uiauto@1.10.10 (argparse@0.1.16, winston@0.8.3)
├── socket.io@1.3.7 (debug@2.1.0, has-binary-data@0.1.3, socket.io-parser@2.2.4, socket.io-adapter@0.3.1, engine.io@1.5.4, socket.io-client@1.3.7)
├── namp@0.2.25 (highlight.js@8.9.1)
├── appium-adb@1.7.5 (underscore@1.6.0, q@1.0.1, ncp@0.5.1, appium-support@0.0.3, winston@0.7.3)
├── argparse@1.0.3 (sprintf-js@1.0.3, lodash@3.10.1)
├── appium-support@1.1.2 (bluebird@2.10.2, lodash@3.10.1)
├── xml2js@0.4.15 (sax@1.1.4, xmlbuilder@4.0.0)
├── plist@1.1.0 (util-deprecate@1.0.0, base64-js@0.0.6, xmlbuilder@2.2.1)
├── appium-instruments@2.0.6 (underscore@1.7.0, winston@0.8.3, appium-support@1.0.3)
├── appium-xcode@2.0.5 (q@1.4.1, denodeify@1.2.1, npmlog@1.2.1, source-map-support@0.2.10, asyncbox@2.3.1, lodash@3.10.1, babel-runtime@5.5.5)
├── node-simctl@2.1.0 (npmlog@1.2.1, source-map-support@0.2.10, appium-logger@1.1.7, es6-mapify@1.0.0, asyncbox@2.3.1, babel-runtime@5.5.5, teen_process@1.5.1)
└── appium-chromedriver@2.3.2 (is-os@1.0.0, q@1.4.1, ps-node@0.0.4, rimraf@2.4.3, request-promise@0.4.3, source-map-support@0.3.3, appium-logger@1.1.7, request@2.65.0, asyncbox@2.3.1, lodash@3.10.1, babel-runtime@5.5.5, appium-jsonwp-proxy@1.4.1, teen_process@1.5.1)
username@redacted:~$
编辑:有一个我没有考虑的选项,那就是appium实际上已经正确安装,我不应该担心。当我稍后尝试加载 appium 时,它似乎已加载,尽管我还没有尝试使用它进行移动测试。我的问题是,如果这个输出确实意味着它正在工作,那么所有错误都是怎么回事。我经历了类似的过程在 MacOSX 上安装 Appium,但当时我没有看到所有这些错误。为什么此安装会出现错误?它是否已安装,但此输出暴露了错误?
最佳答案
在我看来,直接查看 Appium
的 GIT 项目会更容易。之后,您可以运行 ./reset.sh
进行设置和验证。
关于node.js - 如何在 Ubuntu 上安装 appium?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33680526/
我正在学习构建单页应用程序 (SPA) 所需的所有技术。总而言之,我想将我的应用程序实现为单独的层,其中前端仅使用 API Web 服务(json 通过 socket.io)与后端通信。前端基本上是
当我看到存储在我的数据库中的日期时。 这是 正常 。日期和时间就是这样。 但是当我运行 get 请求来获取数据时。 此格式与存储在数据库 中的格式不同。为什么会发生这种情况? 最佳答案 我认为您可以将
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在尝试使用backbone.js 实现一些代码 和 hogan.js (http://twitter.github.com/hogan.js/) Hogan.js was developed ag
我正在使用 Backbone.js、Node.js 和 Express.js 制作一个 Web 应用程序,并且想要添加用户功能(登录、注销、配置文件、显示内容与该用户相关)。我打算使用 Passpor
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我尝试在 NodeJS 中加载数据,然后将其传递给 ExpressJS 以在浏览器中呈现 d3 图表。 我知道我可以通过这种方式加载数据 - https://github.com/mbostock/q
在 node.js 中,我似乎遇到了相同的 3 个文件名来描述应用程序的主要入口点: 使用 express-generator 包时,会创建一个 app.js 文件作为生成应用的主要入口点。 通过 n
最近,我有机会观看了 john papa 关于构建单页应用程序的精彩类(class)。我会喜欢的。它涉及服务器端和客户端应用程序的方方面面。 我更喜欢客户端。在他的实现过程中,papa先生在客户端有类
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我是一个图形新手,需要帮助了解各种 javascript 2D 库的功能。 . . 我从 Pixi.js 中得到了什么,而我没有从 Konva 等基于 Canvas 的库中得到什么? 我从 Konva
我正在尝试将一些 LESS 代码(通过 ember-cli-less)构建到 CSS 文件中。 1) https://almsaeedstudio.com/ AdminLTE LESS 文件2) Bo
尝试查看 Express Passport 中所有登录用户的所有 session ,并希望能够查看当前登录的用户。最好和最快的方法是什么? 我在想也许我可以在登录时执行此操作并将用户模型数据库“在线”
我有一个 React 应用程序,但我需要在组件加载完成后运行一些客户端 js。一旦渲染函数完成并加载,运行与 DOM 交互的 js 的最佳方式是什么,例如 $('div').mixItUp() 。对
请告诉我如何使用bodyparser.raw()将文件上传到express.js服务器 客户端 // ... onFilePicked(file) { const url = 'upload/a
我正在尝试从 Grunt 迁移到 Gulp。这个项目在 Grunt 下运行得很好,所以我一定是在 Gulp 中做错了什么。 除脚本外,所有其他任务均有效。我现在厌倦了添加和注释部分。 我不断收到与意外
我正在尝试更改我的网站名称。找不到可以设置标题或应用程序名称的位置。 最佳答案 您可以在 config/ 目录中创建任何文件,例如 config/app.js 包含如下内容: module.expor
经过多年的服务器端 PHP/MySQL 开发,我正在尝试探索用于构建现代 Web 应用程序的新技术。 我正在尝试对所有 JavaScript 内容进行排序,如果我理解得很好,一个有效的解决方案可以是服
我是 Nodejs 的新手。我在 route 目录中有一个 app.js 和一个 index.js。我有一个 app.use(multer....)。我还定义了 app.post('filter-re
我正在使用 angular-seed用于构建我的应用程序的模板。最初,我将所有 JavaScript 代码放入一个文件 main.js。该文件包含我的模块声明、 Controller 、指令、过滤器和
我是一名优秀的程序员,十分优秀!