该文为 macaca 的 python 版本
macaca python 版本 https://github.com/macacajs/wd.py
下载地址 http://www.oracle.com/technetwork/java/javase/downloads/index.html
找到合适的 java 版本下载,我选择的是 jdk-8u121-windows-x64.exe。按步骤安装即可。安装路径一般默认。
配置 java 环境变量:
JAVA_HOME 变量值为 JDK 的安装目录,笔者为 C:\Program Files\Java\jdk1.8.0_121
PATH PATH 变量值后追加 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
CLASSPATH 变量值为 ;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
检查是否安装成功
C:\Users\cmd>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)
下载地址 http://tools.android-studio.org/index.php/sdk 处下载 android-sdk_r24.4.1-windows.zip
将 android-sdk-windows 解压到你需要的目录下,笔者是 D:\Android\android-sdk-windows
配置 android-sdk 环境变量:
ANDROID_HOME 变量值为 android-sdk 的解压目录,笔者为 D:\Android\android-sdk-windows
PATH PATH 变量值的最后追加 ;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\build-tools;
接下来你便可以用 D:\Android\android-sdk-windows 下的 SDK Manager.exe 下载配置 SDK 或 AVD Manager.exe 配置 AVD 模拟器了。
此处不多讲了,如果你需要测试 macaca 支持的 android 应用的话,请先安装配置好某一版本的 SDK 及其相关工具。
win10 测试安卓应用的话目前我的配置是:
关于 Android 开发环境的大家可以参考此人的博客
Android SDK Manager 和 AVD Manager 使用
Android 开发环境配置
AVD 模拟器有些慢,我一般用的都是 Genymotion 请参考http://www.iplaysoft.com/genymotion.html 自行安装配置。
去官网 https://nodejs.org/en/ 下载 v6.10.0 LTS 这个稳定版本,也就是 node-v6.10.0-x64.msi 这个。
然后安装到本地 D:\nodejs
刚安装完是这样的版本
C:\Users\cmd>node -v
v6.10.0
C:\Users\cmd>npm -v
3.10.10
PS:node 的版本最好就用 LTS 这个长期技术支持稳定版本,其他版本会有问题。
npm 的版本无所谓,你升级到最新的 npm 3.10.10 弄 macaca 也不会有什么问题。
追加到 PATH 之后便可以了,D:\nodejs;D:\nodejs\node-global
去 D:\nodejs\目录下,新建 node-global 和 node-cache。先看下 如果已经有了 就不用再新建了。
C:\Users\cmd>npm config set prefix "D:\nodejs\node-global"
C:\Users\cmd>npm config set cache "D:\nodejs\node-cache"
检查下是否设置成功
C:\Users\cmd>npm config get prefix
D:\nodejs\node-global
C:\Users\cmd>npm config get cache
D:\nodejs\node-cache
再检查下安装源,我应该所有的安装源都是 taobao.org,安装源有问题的话
npm config set registry http://registry.npm.taobao.org
C:\Users\cmd>npm config get registry
http://registry.npm.taobao.org
PS: 推荐尽量用国内的淘宝镜像源,因为你懂得的原因某些组件需要国外服务器下载,下载会失败导致 macaca 相关安装失败。
macaca 最新的采用了 gradle 来构建和部署(以前有依赖 Apache ant 构建)。所以我们需要安装配置 gradle。
详见官方帮助 https://gradle.org/install 来部署安装好 gradle。
见到如下输出就说明 gradle 配置正确了:
win10 如下
C:\Users\cmd>gradle -v
------------------------------------------------------------
Gradle 3.5
------------------------------------------------------------
Build time: 2017-04-10 13:37:25 UTC
Revision: b762622a185d59ce0cfc9cbc6ab5dd22469e18a6
Groovy: 2.4.10
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_121 (Oracle Corporation 25.121-b13)
OS: Windows 10 10.0 amd64
然后就是安装 macaca-cli 和各种 macaca 驱动
npm i macaca-cli -g
npm i macaca-electron -g
npm i macaca-chrome -g
npm i macaca-android -g
最后 macaca doctor 检查环境
C:\Users\cmd>macaca doctor
macaca-doctor version: 2.0.2
Node.js checklist:
node env: D:\nodejs\node.exe
node version: v6.10.0
Android checklist:
JAVA version is `1.8.0_121`
JAVA_HOME is set to `C:\Program Files\Java\jdk1.8.0_121`
ANDROID_HOME is set to `D:\Android\android-sdk-windows`
Platforms is set to `D:\Android\android-sdk-windows\platforms\android-25`
ADB tool is set to `D:\Android\android-sdk-windows\platform-tools\adb.exe`
GRADLE_HOME is set to `D:\gradle-3.5`
Installed driver list:
android: 2.0.36
chrome: 1.0.6
electron: 1.1.11
官网下载最新的 python3 我下的是 python-3.6.2.exe 直接安装。
设置环境变量
PATH PATH 变量值后追加 D:\python\;D:\python\Scripts
检查 python -v 查看是否安装正确 后 exit() 退出 python 环境
D:\>cd macaca
D:\macaca>git clone https://github.com/macaca-sample/sample-python
地址 https://pypi.python.org/pypi/wd 也可如下命令安装
D:\macaca\sample-python\tests>python -m pip install wd
Collecting wd
Downloading wd-0.1.10-py3-none-any.whl
Requirement already satisfied: retrying in d:\python\lib\site-packages (from wd)
Requirement already satisfied: enum34 in d:\python\lib\site-packages (from wd)
Requirement already satisfied: requests in d:\python\lib\site-packages (from wd)
Requirement already satisfied: six>=1.7.0 in d:\python\lib\site-packages (from retrying->wd)
Installing collected packages: wd
Successfully installed wd-0.1.10
2.3 在安装下样例依赖
这步应该和上步骤重复都是 wd.py 环境安装,您可选择一种方式
D:\macaca\sample-python>pip install -r requirements.txt
Requirement already satisfied: wd in d:\python\lib\site-packages (from -r requirements.txt (line 1))
Requirement already satisfied: retrying in d:\python\lib\site-packages (from -r requirements.txt (line 2))
Requirement already satisfied: requests in d:\python\lib\site-packages (from wd->-r requirements.txt (line 1))
Requirement already satisfied: enum34 in d:\python\lib\site-packages (from wd->-r requirements.txt (line 1))
Requirement already satisfied: six>=1.7.0 in d:\python\lib\site-packages (from retrying->-r requirements.txt (line 2))
Cache entry deserialization failed, entry ignored
C:\Users\cmd>macaca server -p 3456 --verbose
>> index.js:18:12 [master] pid:18312 webdriver server start with config:
{ port: 3456,
verbose: true,
always: true,
ip: '*.*.68.*',
host: 'cmd',
loaded_time: '2017-09-11 14:33:28' }
>> middlewares.js:17:10 [master] pid:18312 base middlewares attached
>> router.js:127:10 [master] pid:18312 router set
>> webdriver sdk launched
D:\macaca\sample-python>python tests/macaca-desktop-sample.test.py
也可 继续 cd tests 到脚本目录 D:\macaca\sample-python\tests>下执行 python macaca-desktop-sample.test.py
desktop 依赖 electron
如果跑 android 脚本 需要启动一安卓模拟器比如 genymotion 再同理执行 D:\macaca\sample-python\tests>python macaca-android-sample.test.py
默认不改动的 macaca-android-sample.test.py 貌似有问题 python 执行命令行 会显示 Retry connecting server... 然后 macaca server 命令行一直在
>> start to download: https://npmcdn.com/android-app-bootstrap@latest/android_app_bootstrap/build/outputs/apk/android_app_bootstrap-debug.apk
并无后续响应,停在这儿一直不走了。
单独访问该下载地址又是可以直接下载下来的,于是我将该段下载测试 apk 的代码 改为如下:即直接访问链接下载到本地某一位置。
desired_caps = {
'platformName': 'android',
'app': 'D:\\Install\\apk\\android_app_bootstrap-debug.apk',
}
最后在执行 测试通过
最后再尝试新建一自家 apk 测试
import unittest
import os
import time
from macaca import WebDriver
desired_caps = {
'platformName': 'android',
'app': 'D:\\Install\\apk\\****.apk',
'reuse': 3
}
server_url = {
'hostname': 'localhost',
'port': 3456
}
class MacacaTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver = WebDriver(desired_caps, server_url)
cls.driver.init()
@classmethod
def tearDownClass(cls):
cls.driver.quit()
def test_01_login(self):
self.driver \
.element_by_id('com.acp.main:id/tvBottomTab4') \
.click()
time.sleep(5)
self.driver\
.element_by_id('com.acp.main:id/layoutLogin')\
.click()
time.sleep(5)
self.driver\
.element_by_id('com.acp.aicaitencent:id/etUserName')\
.send_keys('********')
time.sleep(5)
self.driver\
.element_by_id('com.acp.aicaitencent:id/etPwd')\
.send_keys('*******')
time.sleep(5)
self.driver\
.element_by_id('com.acp.aicaitencent:id/tvLogin')\
.click()
time.sleep(5)
if __name__ == '__main__':
unittest.main()
测试通过
以上为本日 9 月 11 日中午休息 尝试 python 版本的 macaca 记录
还是这么复杂
楼主,你好,能否帮忙看下,执行同样的安卓用例,报以下错误
UIAutomatorWD http server ready
proxy.js:55:14 [master] pid:18500 Proxy: /wd/hub/session/4c70c99a-437c-41fa-9a4c-ebf084fa17c7/element:POST to http://127.0.0.1:9001/wd/hub/session/4c70c99a-437c-41fa-9a4c-ebf084fa17c7/element:POST with body: {"using":"name","value":"HO
ME"}
proxy.js:85:20 [master] pid:18500 Got response with status 200: {"status":32,"value":"Argument was an invalid selector (e.g. XPath/CSS).","sessionId":"4c70c99a-437c-41fa-9a4c-ebf084fa17c7"}
session.js:109:14 [master] pid:18500 Send HTTP Respone to Client[2017-10-16 20:56:09]: {"status":32,"value":"\"Argument was an invalid selector (e.g. XPath/CSS).\"","sessionId":"4c70c99a-437c-41fa-9a4c-ebf084fa17c7"}
responseHandler.js:11:12 [master] pid:18500 Recieve HTTP Request from Client[2017-10-16 20:56:14]: method: POST url: /wd/hub/session/4c70c99a-437c-41fa-9a4c-ebf084fa17c7/element, jsonBody: {"using":"name","value":"Alert"}
restart UIAutomatorWD server
uiautomator-client.js:61:14 [master] pid:18500 INSTRUMENTATION_RESULT: shortMsg=Process crashed.
INSTRUMENTATION_CODE: 0uiautomator-client.js:61:14 [master] pid:18500 INSTRUMENTATION_STATUS: numtests=1
INSTRUMENTATION_STATUS: stream=
com.macaca.android.testing.UIAutomatorWD:
INSTRUMENTATION_STATUS: id=AndroidJUnitRunner
INSTRUMENTATION_STATUS: test=MacacaTestRunner
INSTRUMENTATION_STATUS: class=com.macaca.android.testing.UIAutomatorWD
INSTRUMENTATION_STATUS: current=1
INSTRUMENTATION_STATUS_CODE: 1uiautomator-client.js:61:14 [master] pid:18500 INSTRUMENTATION_STATUS: stream=
UIAutomatorWD->http://localhost:9001<-UIAutomatorWD
INSTRUMENTATION_STATUS_CODE: 0UIAutomatorWD http server ready
proxy.js:55:14 [master] pid:18500 Proxy: /wd/hub/session/4c70c99a-437c-41fa-9a4c-ebf084fa17c7/element:POST to http://127.0.0.1:9001/wd/hub/session/4c70c99a-437c-41fa-9a4c-ebf084fa17c7/element:POST with body: {"using":"name","value":"Al
ert"}
proxy.js:85:20 [master] pid:18500 Got response with status 200: {"status":32,"value":"Argument was an invalid selector (e.g. XPath/CSS).","sessionId":"4c70c99a-437c-41fa-9a4c-ebf084fa17c7"}
session.js:109:14 [master] pid:18500 Send HTTP Respone to Client[2017-10-16 20:56:16]: {"status":32,"value":"\"Argument was an invalid selector (e.g. XPath/CSS).\"","sessionId":"4c70c99a-437c-41fa-9a4c-ebf084fa17c7"}
responseHandler.js:11:12 [master] pid:18500 Recieve HTTP Request from Client[2017-10-16 20:56:17]: method: POST url: /wd/hub/session/4c70c99a-437c-41fa-9a4c-ebf084fa17c7/element, jsonBody: {"using":"name","value":"Alert"}
restart UIAutomatorWD server
uiautomator-client.js:61:14 [master] pid:18500 INSTRUMENTATION_RESULT: shortMsg=Process crashed.
INSTRUMENTATION_CODE: 0uiautomator-client.js:61:14 [master] pid:18500 java.lang.SecurityException: Calling from not trusted UID!
at android.app.UiAutomationConnection.throwIfCalledByNotTrustedUidLocked(UiAutomationConnection.java:376)
at android.app.UiAutomationConnection.shutdown(UiAutomationConnection.java:275)
at android.app.IUiAutomationConnection$Stub.onTransact(IUiAutomationConnection.java:118)
at android.os.Binder.execTransact(Binder.java:455)uiautomator-client.js:61:14 [master] pid:18500 java.lang.SecurityException: Calling from not trusted UID!
at android.os.Parcel.readException(Parcel.java:1546)
at android.os.Parcel.readException(Parcel.java:1499)
at android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3913)
at com.android.commands.am.Am.runInstrument(Am.java:976)
at com.android.commands.am.Am.onRun(Am.java:317)
at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
at com.android.commands.am.Am.main(Am.java:97)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:284)
以上问题已解决,目前使用安卓 7.0 设备已跑通样例,好艰难
感觉很赞,写的非常细,开工,按你的来开搞~
ing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
>> responseHandler.js:11:12 [master] pid:140316 Recieve HTTP Request from Client
[2017-10-20 10:47:23]: method: POST url: /wd/hub/session, jsonBody: {"desiredCap
abilities":{"app":"E:\\apk_Macaca\\android_app_bootstrap-debug.apk","platformNam
e":"android"}}
>> session.js:47:10 [master] pid:140316 Creating session, sessionId: 0c5951d8-76
f4-4a92-b1d6-038cd2011d5c.
>> helper.js:208:12 [master] pid:140316 Using local app form E:\apk_Macaca\andro
id_app_bootstrap-debug.apk
>> responseHandler.js:56:12 [master] pid:140316 Send Error Respone to Client: Er
ror: Command failed: D:\Android\sdk/platform-tools/adb -s 192.168.187.101:5555 p
ush D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomatorwd
\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.macaca.android.testing
>> responseHandler.js:62:14 [master] pid:140316 Error: Command failed: D:\Androi
d\sdk/platform-tools/adb -s 192.168.187.101:5555 push D:\nodejs\node-global\node
_modules\macaca-android\node_modules\uiautomatorwd\app\build\outputs\apk\app-deb
ug.apk /data/local/tmp/com.macaca.android.testing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
Error: Command failed: D:\Android\sdk/platform-tools/adb -s 192.168.187.101:55
55 push D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomat
orwd\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.macaca.android.test
ing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
>> responseHandler.js:11:12 [master] pid:140316 Recieve HTTP Request from Client
[2017-10-20 10:47:24]: method: POST url: /wd/hub/session, jsonBody: {"desiredCap
abilities":{"app":"E:\\apk_Macaca\\android_app_bootstrap-debug.apk","platformNam
e":"android"}}
>> session.js:47:10 [master] pid:140316 Creating session, sessionId: 96857dd9-fe
1b-4503-b6ab-ce1300065ffd.
>> helper.js:208:12 [master] pid:140316 Using local app form E:\apk_Macaca\andro
id_app_bootstrap-debug.apk
>> responseHandler.js:56:12 [master] pid:140316 Send Error Respone to Client: Er
ror: Command failed: D:\Android\sdk/platform-tools/adb -s 192.168.187.101:5555 p
ush D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomatorwd
\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.macaca.android.testing
>> responseHandler.js:62:14 [master] pid:140316 Error: Command failed: D:\Androi
d\sdk/platform-tools/adb -s 192.168.187.101:5555 push D:\nodejs\node-global\node
_modules\macaca-android\node_modules\uiautomatorwd\app\build\outputs\apk\app-deb
ug.apk /data/local/tmp/com.macaca.android.testing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
Error: Command failed: D:\Android\sdk/platform-tools/adb -s 192.168.187.101:55
55 push D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomat
orwd\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.macaca.android.test
ing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
>> responseHandler.js:11:12 [master] pid:140316 Recieve HTTP Request from Client
[2017-10-20 10:47:25]: method: POST url: /wd/hub/session, jsonBody: {"desiredCap
abilities":{"app":"E:\\apk_Macaca\\android_app_bootstrap-debug.apk","platformNam
e":"android"}}
>> session.js:47:10 [master] pid:140316 Creating session, sessionId: c6b0d50d-4e
20-4b58-8ab7-9237303ddadf.
>> helper.js:208:12 [master] pid:140316 Using local app form E:\apk_Macaca\andro
id_app_bootstrap-debug.apk
>> responseHandler.js:56:12 [master] pid:140316 Send Error Respone to Client: Er
ror: Command failed: D:\Android\sdk/platform-tools/adb -s 192.168.187.101:5555 p
ush D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomatorwd
\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.macaca.android.testing
>> responseHandler.js:62:14 [master] pid:140316 Error: Command failed: D:\Androi
d\sdk/platform-tools/adb -s 192.168.187.101:5555 push D:\nodejs\node-global\node
_modules\macaca-android\node_modules\uiautomatorwd\app\build\outputs\apk\app-deb
ug.apk /data/local/tmp/com.macaca.android.testing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
Error: Command failed: D:\Android\sdk/platform-tools/adb -s 192.168.187.101:55
55 push D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomat
orwd\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.macaca.android.test
ing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
>> responseHandler.js:11:12 [master] pid:140316 Recieve HTTP Request from Client
[2017-10-20 10:47:26]: method: POST url: /wd/hub/session, jsonBody: {"desiredCap
abilities":{"app":"E:\\apk_Macaca\\android_app_bootstrap-debug.apk","platformNam
e":"android"}}
>> session.js:47:10 [master] pid:140316 Creating session, sessionId: bc2a70af-6f
e2-4ca2-b56f-e1a645ad007a.
>> helper.js:208:12 [master] pid:140316 Using local app form E:\apk_Macaca\andro
id_app_bootstrap-debug.apk
>> responseHandler.js:56:12 [master] pid:140316 Send Error Respone to Client: Er
ror: Command failed: D:\Android\sdk/platform-tools/adb -s 192.168.187.101:5555 p
ush D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomatorwd
\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.macaca.android.testing
>> responseHandler.js:62:14 [master] pid:140316 Error: Command failed: D:\Androi
d\sdk/platform-tools/adb -s 192.168.187.101:5555 push D:\nodejs\node-global\node
_modules\macaca-android\node_modules\uiautomatorwd\app\build\outputs\apk\app-deb
ug.apk /data/local/tmp/com.macaca.android.testing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
Error: Command failed: D:\Android\sdk/platform-tools/adb -s 192.168.187.101:55
55 push D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomat
orwd\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.macaca.android.test
ing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
>> responseHandler.js:11:12 [master] pid:140316 Recieve HTTP Request from Client
[2017-10-20 10:47:27]: method: POST url: /wd/hub/session, jsonBody: {"desiredCap
abilities":{"app":"E:\\apk_Macaca\\android_app_bootstrap-debug.apk","platformNam
e":"android"}}
>> session.js:47:10 [master] pid:140316 Creating session, sessionId: aefaade2-ef
83-4ef9-b694-de7d2562c7f8.
>> helper.js:208:12 [master] pid:140316 Using local app form E:\apk_Macaca\andro
id_app_bootstrap-debug.apk
>> responseHandler.js:56:12 [master] pid:140316 Send Error Respone to Client: Er
ror: Command failed: D:\Android\sdk/platform-tools/adb -s 192.168.187.101:5555 p
ush D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomatorwd
\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.macaca.android.testing
>> responseHandler.js:62:14 [master] pid:140316 Error: Command failed: D:\Androi
d\sdk/platform-tools/adb -s 192.168.187.101:5555 push D:\nodejs\node-global\node
_modules\macaca-android\node_modules\uiautomatorwd\app\build\outputs\apk\app-deb
ug.apk /data/local/tmp/com.macaca.android.testing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
Error: Command failed: D:\Android\sdk/platform-tools/adb -s 192.168.187.101:55
55 push D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomat
orwd\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.macaca.android.test
ing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
>> responseHandler.js:11:12 [master] pid:140316 Recieve HTTP Request from Client
[2017-10-20 10:47:28]: method: POST url: /wd/hub/session, jsonBody: {"desiredCap
abilities":{"app":"E:\\apk_Macaca\\android_app_bootstrap-debug.apk","platformNam
e":"android"}}
>> session.js:47:10 [master] pid:140316 Creating session, sessionId: 80784b7a-0a
da-4ce6-af8c-c24fbe827d4e.
>> helper.js:208:12 [master] pid:140316 Using local app form E:\apk_Macaca\andro
id_app_bootstrap-debug.apk
>> responseHandler.js:56:12 [master] pid:140316 Send Error Respone to Client: Er
ror: Command failed: D:\Android\sdk/platform-tools/adb -s 192.168.187.101:5555 p
ush D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomatorwd
\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.macaca.android.testing
>> responseHandler.js:62:14 [master] pid:140316 Error: Command failed: D:\Androi
d\sdk/platform-tools/adb -s 192.168.187.101:5555 push D:\nodejs\node-global\node
_modules\macaca-android\node_modules\uiautomatorwd\app\build\outputs\apk\app-deb
ug.apk /data/local/tmp/com.macaca.android.testing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
Error: Command failed: D:\Android\sdk/platform-tools/adb -s 192.168.187.101:55
55 push D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomat
orwd\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.macaca.android.test
ing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
>> responseHandler.js:11:12 [master] pid:140316 Recieve HTTP Request from Client
[2017-10-20 10:47:29]: method: POST url: /wd/hub/session, jsonBody: {"desiredCap
abilities":{"app":"E:\\apk_Macaca\\android_app_bootstrap-debug.apk","platformNam
e":"android"}}
>> session.js:47:10 [master] pid:140316 Creating session, sessionId: 65497acc-4c
7d-4792-98f0-fa650e069b41.
>> helper.js:208:12 [master] pid:140316 Using local app form E:\apk_Macaca\andro
id_app_bootstrap-debug.apk
>> responseHandler.js:56:12 [master] pid:140316 Send Error Respone to Client: Er
ror: Command failed: D:\Android\sdk/platform-tools/adb -s 192.168.187.101:5555 p
ush D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomatorwd
\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.macaca.android.testing
>> responseHandler.js:62:14 [master] pid:140316 Error: Command failed: D:\Androi
d\sdk/platform-tools/adb -s 192.168.187.101:5555 push D:\nodejs\node-global\node
_modules\macaca-android\node_modules\uiautomatorwd\app\build\outputs\apk\app-deb
ug.apk /data/local/tmp/com.macaca.android.testing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
Error: Command failed: D:\Android\sdk/platform-tools/adb -s 192.168.187.101:55
55 push D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomat
orwd\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.macaca.android.test
ing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
>> responseHandler.js:11:12 [master] pid:140316 Recieve HTTP Request from Client
[2017-10-20 10:47:30]: method: POST url: /wd/hub/session, jsonBody: {"desiredCap
abilities":{"app":"E:\\apk_Macaca\\android_app_bootstrap-debug.apk","platformNam
e":"android"}}
>> session.js:47:10 [master] pid:140316 Creating session, sessionId: 3fdea234-ed
38-4f71-9864-6b1e28f771c2.
>> helper.js:208:12 [master] pid:140316 Using local app form E:\apk_Macaca\andro
id_app_bootstrap-debug.apk
>> responseHandler.js:56:12 [master] pid:140316 Send Error Respone to Client: Er
ror: Command failed: D:\Android\sdk/platform-tools/adb -s 192.168.187.101:5555 p
ush D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomatorwd
\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.macaca.android.testing
>> responseHandler.js:62:14 [master] pid:140316 Error: Command failed: D:\Androi
d\sdk/platform-tools/adb -s 192.168.187.101:5555 push D:\nodejs\node-global\node
_modules\macaca-android\node_modules\uiautomatorwd\app\build\outputs\apk\app-deb
ug.apk /data/local/tmp/com.macaca.android.testing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
Error: Command failed: D:\Android\sdk/platform-tools/adb -s 192.168.187.101:55
55 push D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomat
orwd\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.macaca.android.test
ing
at ChildProcess.exithandler (child_process.js:204:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:891:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
>> responseHandler.js:11:12 [master] pid:140316 Recieve HTTP Request from Client
[2017-10-20 10:47:31]: method: POST url: /wd/hub/session, jsonBody: {"desiredCap
abilities":{"app":"E:\\apk_Macaca\\android_app_bootstrap-debug.apk","platformNam
e":"android"}}
>> session.js:47:10 [master] pid:140316 Creating session, sessionId: 3c6b6551-68
e2-4546-9019-772cc7bf5768.
>> helper.js:208:12 [master] pid:140316 Using local app form E:\apk_Macaca\andro
id_app_bootstrap-debug.apk
^C终止批处理操作吗(Y/N)? y
D:\nodejs\node-global>
@harsayer
求问,一直卡在 retry conecting server..(我已经按照你的把 apk 下载到本来,并修改了路径),我看了他的 adb 命令,按照他的路径找,没有找到对应的包,感觉是不是没有生成成功??
@jierong01
Error: Command failed: D:\Androi
d\sdk/platform-tools/adb -s 192.168.187.101:5555 push D:\nodejs\node-global\node
_modules\macaca-android\node_modules\uiautomatorwd\app\build\outputs\apk\app-deb
ug.apk /data/local/tmp/com.macaca.android.testin
应该是你的 macaca-android 驱动没安装好 这个路径下 有这个文件吗 app-deb
ug.apk 没有就是编译 macaca-android 的时候 没成功,安装完要看日志 要保证全部 build sucessful 的字样
最新的 app-inspector 2.0.8 和 macaca-android 2.0.40 需要 Android SDK Build-tools 25.0.2
Android SDK Platform-tools 26.0.1 和 Extras 下的 Android Support Repository 47
还有需要 android sdk Platform (API 26)
安装的 adnroid 驱动:
使用 macaca doctor 的检测:
@harsayer
我查看一下 D:\nodejs\node-global\node_modules\macaca-android\node_modules\uiautomatorwd\app\build\outputs\apk\app-deb
ug.apk /data/local/tmp/com.macaca.android.testin 这个路径下面的东西,还时没有这个文件,难道驱动没有安装成功么??也没提示我失败啊。就是你说的,没有 app-debug.apk 这个
npm uninstall macaca-android -g
npm uninstall app-inspector -g
npm cache clean
同时可以清理下下载缓存目录:
win10 在 C:\Users\your name\AppData\Local\Temp 下 手动删除 npm 开头相关即可
ubuntu16.04 在 /tmp 下 sudo rm -rf npm* 即可
再安装 你这日志 一看就是 覆盖安装的 有脏东西
要番 羽 墙的 或者 *** 的 简单的话 开启中国移动 4G 卡 wifi 热点 电脑只连该热点 再 npm i
UIAutomatorWD->http://localhost:9001<-UIAutomatorWD
INSTRUMENTATION_STATUS_CODE: 0
>> UIAutomatorWD http server ready
>> proxy.js:55:14 [master] pid:154912 Proxy: /wd/hub/session/9a770030-8647-4845-
a38e-59533a1bf653/element:POST to http://127.0.0.1:9001/wd/hub/session/9a770030-
8647-4845-a38e-59533a1bf653/element:POST with body: {"using":"name","value":"Ale
rt"}
>> proxy.js:85:20 [master] pid:154912 Got response with status 200: {"sessionId"
:"9a770030-8647-4845-a38e-59533a1bf653","status":32,"value":"Argument was an inv
alid selector (e.g. XPath/CSS)."}
>> session.js:109:14 [master] pid:154912 Send HTTP Respone to Client[2017-10-20
14:54:26]: {"sessionId":"9a770030-8647-4845-a38e-59533a1bf653","status":32,"valu
e":"\"Argument was an invalid selector (e.g. XPath/CSS).\""}
>> responseHandler.js:11:12 [master] pid:154912 Recieve HTTP Request from Client
[2017-10-20 14:54:27]: method: POST url: /wd/hub/session/9a770030-8647-4845-a38e
-59533a1bf653/element, jsonBody: {"using":"name","value":"Alert"}
>> restart UIAutomatorWD server
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_RESULT: short
Msg=Process crashed.
>> uiautomator-client.js:61:14 [master] pid:154912
INSTRUMENTATION_CODE: 0
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_STATUS: id=An
droidJUnitRunner
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_STATUS: curre
nt=1
INSTRUMENTATION_STATUS: class=com.macaca.android.testing.UIAutomatorWD
INSTRUMENTATION_STATUS: stream=
com.macaca.android.testing.UIAutomatorWD:
INSTRUMENTATION_STATUS: numtests=1
INSTRUMENTATION_STATUS: test=MacacaTestRunner
INSTRUMENTATION_STATUS_CODE: 1
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_STATUS: strea
m=
UIAutomatorWD->http://localhost:9001<-UIAutomatorWD
>> UIAutomatorWD http server ready
>> proxy.js:55:14 [master] pid:154912 Proxy: /wd/hub/session/9a770030-8647-4845-
a38e-59533a1bf653/element:POST to http://127.0.0.1:9001/wd/hub/session/9a770030-
8647-4845-a38e-59533a1bf653/element:POST with body: {"using":"name","value":"Ale
rt"}
>> uiautomator-client.js:61:14 [master] pid:154912
INSTRUMENTATION_STATUS_CODE: 0
>> proxy.js:85:20 [master] pid:154912 Got response with status 200: {"sessionId"
:"9a770030-8647-4845-a38e-59533a1bf653","status":32,"value":"Argument was an inv
alid selector (e.g. XPath/CSS)."}
>> session.js:109:14 [master] pid:154912 Send HTTP Respone to Client[2017-10-20
14:54:29]: {"sessionId":"9a770030-8647-4845-a38e-59533a1bf653","status":32,"valu
e":"\"Argument was an invalid selector (e.g. XPath/CSS).\""}
>> responseHandler.js:11:12 [master] pid:154912 Recieve HTTP Request from Client
[2017-10-20 14:54:30]: method: POST url: /wd/hub/session/9a770030-8647-4845-a38e
-59533a1bf653/element, jsonBody: {"using":"name","value":"Alert"}
>> restart UIAutomatorWD server
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_RESULT: short
Msg=Process crashed.
INSTRUMENTATION_CODE: 0
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_STATUS: id=An
droidJUnitRunner
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_STATUS: curre
nt=1
INSTRUMENTATION_STATUS: class=com.macaca.android.testing.UIAutomatorWD
INSTRUMENTATION_STATUS: stream=
com.macaca.android.testing.UIAutomatorWD:
INSTRUMENTATION_STATUS: numtests=1
INSTRUMENTATION_STATUS: test=MacacaTestRunner
INSTRUMENTATION_STATUS_CODE: 1
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_STATUS: strea
m=
>> uiautomator-client.js:61:14 [master] pid:154912
UIAutomatorWD->http://localhost:9001<-UIAutomatorWD
INSTRUMENTATION_STATUS_CODE: 0
>> UIAutomatorWD http server ready
>> proxy.js:55:14 [master] pid:154912 Proxy: /wd/hub/session/9a770030-8647-4845-
a38e-59533a1bf653/element:POST to http://127.0.0.1:9001/wd/hub/session/9a770030-
8647-4845-a38e-59533a1bf653/element:POST with body: {"using":"name","value":"Ale
rt"}
>> proxy.js:85:20 [master] pid:154912 Got response with status 200: {"sessionId"
:"9a770030-8647-4845-a38e-59533a1bf653","status":32,"value":"Argument was an inv
alid selector (e.g. XPath/CSS)."}
>> session.js:109:14 [master] pid:154912 Send HTTP Respone to Client[2017-10-20
14:54:33]: {"sessionId":"9a770030-8647-4845-a38e-59533a1bf653","status":32,"valu
e":"\"Argument was an invalid selector (e.g. XPath/CSS).\""}
>> responseHandler.js:11:12 [master] pid:154912 Recieve HTTP Request from Client
[2017-10-20 14:54:33]: method: POST url: /wd/hub/session/9a770030-8647-4845-a38e
-59533a1bf653/element, jsonBody: {"using":"name","value":"Webview"}
>> restart UIAutomatorWD server
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_RESULT: short
Msg=Process crashed.
>> uiautomator-client.js:61:14 [master] pid:154912
INSTRUMENTATION_CODE: 0
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_STATUS: id=An
droidJUnitRunner
INSTRUMENTATION_STATUS: current=1
INSTRUMENTATION_STATUS: class=com.macaca.android.testing.UIAutomatorWD
INSTRUMENTATION_STATUS: stream=
com.macaca.android.testing.UIAutomatorWD:
INSTRUMENTATION_STATUS: numtests=1
INSTRUMENTATION_STATUS: test=MacacaTestRunner
INSTRUMENTATION_STATUS_CODE: 1
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_STATUS: strea
m=
UIAutomatorWD->http://localhost:9001<-UIAutomatorWD
>> UIAutomatorWD http server ready
>> proxy.js:55:14 [master] pid:154912 Proxy: /wd/hub/session/9a770030-8647-4845-
a38e-59533a1bf653/element:POST to http://127.0.0.1:9001/wd/hub/session/9a770030-
8647-4845-a38e-59533a1bf653/element:POST with body: {"using":"name","value":"Web
view"}
>> uiautomator-client.js:61:14 [master] pid:154912
INSTRUMENTATION_STATUS_CODE: 0
>> proxy.js:85:20 [master] pid:154912 Got response with status 200: {"sessionId"
:"9a770030-8647-4845-a38e-59533a1bf653","status":32,"value":"Argument was an inv
alid selector (e.g. XPath/CSS)."}
>> session.js:109:14 [master] pid:154912 Send HTTP Respone to Client[2017-10-20
14:54:36]: {"sessionId":"9a770030-8647-4845-a38e-59533a1bf653","status":32,"valu
e":"\"Argument was an invalid selector (e.g. XPath/CSS).\""}
>> responseHandler.js:11:12 [master] pid:154912 Recieve HTTP Request from Client
[2017-10-20 14:54:37]: method: POST url: /wd/hub/session/9a770030-8647-4845-a38e
-59533a1bf653/element, jsonBody: {"using":"name","value":"Webview"}
>> restart UIAutomatorWD server
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_RESULT: short
Msg=Process crashed.
>> uiautomator-client.js:61:14 [master] pid:154912
INSTRUMENTATION_CODE: 0
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_STATUS: id=An
droidJUnitRunner
>> uiautomator-client.js:61:14 [master] pid:154912
INSTRUMENTATION_STATUS: current=1
INSTRUMENTATION_STATUS: class=com.macaca.android.testing.UIAutomatorWD
INSTRUMENTATION_STATUS: stream=
com.macaca.android.testing.UIAutomatorWD:
INSTRUMENTATION_STATUS: numtests=1
>> uiautomator-client.js:61:14 [master] pid:154912
INSTRUMENTATION_STATUS: test=MacacaTestRunner
INSTRUMENTATION_STATUS_CODE: 1
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_STATUS: strea
m=
>> uiautomator-client.js:61:14 [master] pid:154912
UIAutomatorWD->http://localhost:9001<-UIAutomatorWD
>> UIAutomatorWD http server ready
>> proxy.js:55:14 [master] pid:154912 Proxy: /wd/hub/session/9a770030-8647-4845-
a38e-59533a1bf653/element:POST to http://127.0.0.1:9001/wd/hub/session/9a770030-
8647-4845-a38e-59533a1bf653/element:POST with body: {"using":"name","value":"Web
view"}
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_STATUS_CODE:
0
>> proxy.js:85:20 [master] pid:154912 Got response with status 200: {"sessionId"
:"9a770030-8647-4845-a38e-59533a1bf653","status":32,"value":"Argument was an inv
alid selector (e.g. XPath/CSS)."}
>> session.js:109:14 [master] pid:154912 Send HTTP Respone to Client[2017-10-20
14:54:39]: {"sessionId":"9a770030-8647-4845-a38e-59533a1bf653","status":32,"valu
e":"\"Argument was an invalid selector (e.g. XPath/CSS).\""}
>> responseHandler.js:11:12 [master] pid:154912 Recieve HTTP Request from Client
[2017-10-20 14:54:40]: method: POST url: /wd/hub/session/9a770030-8647-4845-a38e
-59533a1bf653/element, jsonBody: {"using":"name","value":"Webview"}
>> restart UIAutomatorWD server
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_RESULT: short
Msg=Process crashed.
>> uiautomator-client.js:61:14 [master] pid:154912
INSTRUMENTATION_CODE: 0
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_STATUS: id=An
droidJUnitRunner
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_STATUS: curre
nt=1
INSTRUMENTATION_STATUS: class=com.macaca.android.testing.UIAutomatorWD
INSTRUMENTATION_STATUS: stream=
com.macaca.android.testing.UIAutomatorWD:
INSTRUMENTATION_STATUS: numtests=1
INSTRUMENTATION_STATUS: test=MacacaTestRunner
INSTRUMENTATION_STATUS_CODE: 1
>> uiautomator-client.js:61:14 [master] pid:154912 INSTRUMENTATION_STATUS: strea
m=
UIAutomatorWD->http://localhost:9001<-UIAutomatorWD
>> UIAutomatorWD http server ready
>> proxy.js:55:14 [master] pid:154912 Proxy: /wd/hub/session/9a770030-8647-4845-
a38e-59533a1bf653/element:POST to http://127.0.0.1:9001/wd/hub/session/9a770030-
8647-4845-a38e-59533a1bf653/element:POST with body: {"using":"name","value":"Web
view"}
>> uiautomator-client.js:61:14 [master] pid:154912
INSTRUMENTATION_STATUS_CODE: 0
>> proxy.js:85:20 [master] pid:154912 Got response with status 200: {"sessionId"
:"9a770030-8647-4845-a38e-59533a1bf653","status":32,"value":"Argument was an inv
alid selector (e.g. XPath/CSS)."}
>> session.js:109:14 [master] pid:154912 Send HTTP Respone to Client[2017-10-20
14:54:43]: {"sessionId":"9a770030-8647-4845-a38e-59533a1bf653","status":32,"valu
e":"\"Argument was an invalid selector (e.g. XPath/CSS).\""}
>> responseHandler.js:11:12 [master] pid:154912 Recieve HTTP Request from Client
[2017-10-20 14:54:43]: method: GET url: /wd/hub/session/9a770030-8647-4845-a38e-
59533a1bf653/contexts, jsonBody: {}
>> No webview version found from adb shell!
>> use default chromedriver version!
>> starting chromedriver service!
>> chromedriver bin path: D:\nodejs\node-global\node_modules\macaca-android\node
_modules\macaca-chromedriver\exec\chromedriver2.20.exe
>> Starting ChromeDriver 2.20.353145 (343b531d31eeb933ec778dbcf7081628a1396067)
on port 9515
Only local connections are allowed.
>> chromedriver starting success.
>> proxy.js:51:14 [master] pid:154912 Proxy: /status:GET to http://localhost:951
5/wd/hub/status:GET with body:
>> proxy.js:59:16 [master] pid:154912 Got response with status 200: "{\"sessionI
d\":\"\",\"status\":0,\"value\":{\"build\":{\"version\":\"alpha\"},\"os\":{\"arc
h\":\"x86_64\",\"name\":\"Windows NT\",\"version\":\"6.1 SP1\"}}}"
>> proxy.js:51:14 [master] pid:154912 Proxy: /session:POST to http://localhost:9
515/wd/hub/session:POST with body: {"desiredCapabilities":{"chromeOptions":{"and
roidPackage":"com.github.android_app_bootstrap","androidUseRunningApp":true,"and
roidDeviceSerial":"686f4b0c"}}}
>> proxy.js:59:16 [master] pid:154912 Got response with status 200: {"sessionId"
:"c42b29351b37f6767c4c761e5ab6f306","status":100,"value":{"message":"chrome not
reachable\n (Driver info: chromedriver=2.20.353145 (343b531d31eeb933ec778dbcf70
81628a1396067),platform=W...
>> chromedriver ready with: {"sessionId":null,"status":100,"value":{"message":"c
hrome not reachable\n (Driver info: chromedriver=2.20.353145 (343b531d31eeb933e
c778dbcf7081628a1396067),platform=Windows NT 6.1 SP1 x86_64)"}}
>> proxy.js:51:14 [master] pid:154912 Proxy: /wd/hub/session/:sessionId/window_h
andles:GET to http://localhost:9515/wd/hub/session/c42b29351b37f6767c4c761e5ab6f
306/window_handles:GET with body: {}
>> proxy.js:59:16 [master] pid:154912 Got response with status 200: {"sessionId"
:"c42b29351b37f6767c4c761e5ab6f306","status":6,"value":{"message":"no such sessi
on\n (Driver info: chromedriver=2.20.353145 (343b531d31eeb933ec778dbcf7081628a1
396067),platform=Windows ...
>> responseHandler.js:56:12 [master] pid:154912 Send Error Respone to Client: No
SuchDriver: no such session
(Driver info: chromedriver=2.20.353145 (343b531d31eeb933ec778dbcf7081628a13960
67),platform=Windows NT 6.1 SP1 x86_64)
>> responseHandler.js:62:14 [master] pid:154912 NoSuchDriver: no such session
(Driver info: chromedriver=2.20.353145 (343b531d31eeb933ec778dbcf7081628a13960
67),platform=Windows NT 6.1 SP1 x86_64)
at Object._.parseWebDriverResult (D:\nodejs\node-global\node_modules\macaca-
android\lib\helper.js:72:11)
at Android.getWebviews (D:\nodejs\node-global\node_modules\macaca-android\li
b\macaca-android.js:327:16)
at next (native)
at onFulfilled (D:\nodejs\node-global\node_modules\macaca-cli\node_modules\c
o\index.js:65:19)
at process._tickCallback (internal/process/next_tick.js:109:7)
>> responseHandler.js:78:14 [master] pid:154912 Send Bad HTTP Respone to Client[
2017-10-20 14:55:47]: {"sessionId":"9a770030-8647-4845-a38e-59533a1bf653","statu
s":6,"value":{"message":"no such session\n (Driver info: chromedriver=2.20.3531
45 (343b531d31eeb933ec778dbcf7081628a1396067),platform=Windows NT 6.1 SP1 x86_64
)"}}
>> responseHandler.js:11:12 [master] pid:154912 Recieve HTTP Request from Client
[2017-10-20 14:55:47]: method: GET url: /wd/hub/session/9a770030-8647-4845-a38e-
59533a1bf653/contexts, jsonBody: {}
>> proxy.js:51:14 [master] pid:154912 Proxy: /wd/hub/session/:sessionId/window_h
andles:GET to http://localhost:9515/wd/hub/session/c42b29351b37f6767c4c761e5ab6f
306/window_handles:GET with body: {}
>> proxy.js:59:16 [master] pid:154912 Got response with status 200: {"sessionId"
:"c42b29351b37f6767c4c761e5ab6f306","status":6,"value":{"message":"no such sessi
on\n (Driver info: chromedriver=2.20.353145 (343b531d31eeb933ec778dbcf7081628a1
396067),platform=Windows ...
>> responseHandler.js:56:12 [master] pid:154912 Send Error Respone to Client: No
SuchDriver: no such session
(Driver info: chromedriver=2.20.353145 (343b531d31eeb933ec778dbcf7081628a13960
67),platform=Windows NT 6.1 SP1 x86_64)
>> responseHandler.js:62:14 [master] pid:154912 NoSuchDriver: no such session
(Driver info: chromedriver=2.20.353145 (343b531d31eeb933ec778dbcf7081628a13960
67),platform=Windows NT 6.1 SP1 x86_64)
at Object._.parseWebDriverResult (D:\nodejs\node-global\node_modules\macaca-
android\lib\helper.js:72:11)
at Android.getWebviews (D:\nodejs\node-global\node_modules\macaca-android\li
b\macaca-android.js:327:16)
at next (native)
at onFulfilled (D:\nodejs\node-global\node_modules\macaca-cli\node_modules\c
o\index.js:65:19)
at process._tickCallback (internal/process/next_tick.js:109:7)
>> responseHandler.js:78:14 [master] pid:154912 Send Bad HTTP Respone to Client[
2017-10-20 14:55:47]: {"sessionId":"9a770030-8647-4845-a38e-59533a1bf653","statu
s":6,"value":{"message":"no such session\n (Driver info: chromedriver=2.20.3531
45 (343b531d31eeb933ec778dbcf7081628a1396067),platform=Windows NT 6.1 SP1 x86_64
)"}}
>> responseHandler.js:11:12 [master] pid:154912 Recieve HTTP Request from Client
[2017-10-20 14:55:47]: method: DELETE url: /wd/hub/session/9a770030-8647-4845-a3
8e-59533a1bf653, jsonBody: {}
>> session.js:80:12 [master] pid:154912 Delete session, sessionId: 9a770030-8647
-4845-a38e-59533a1bf653
>> responseHandler.js:49:14 [master] pid:154912 Send HTTP Respone to Client[2017
-10-20 14:55:47]: {"sessionId":"9a770030-8647-4845-a38e-59533a1bf653","status":0
}
>> macaca-chromedriver.js:168:18 [master] pid:154912 chromedriver exit with code
: null, signal: SIGTERM
@harsayer
已经可以安装上官方的 app 了,但是只是启动了起来,并没有跑起来,这是为什么(就是安装上了,启动了 app 打开了 activity,但具体操作没有触发),看了日志,显示 Send Error Respone to Client,这个要怎么弄。自己都有点脸红了,老是伸手党,可网上资料实在太少。
@harsayer
换了一部 android 8.0 的机子可以跑起来了,但是为什么 android 4.3 的机子,竟然没有跑起来???问了一下 qq 群的人,他们说 5.1 的也没有跑起来,6.0 以上就可以,这样有点尴尬~感谢你的指导,谢谢
日志 已经告诉你了 macaca-chromedriver 的事 不同的 chromedriver 能驱动带起来的浏览器版本 是不一样的 。 可以 自己制 chromedriver 版本 。https://testerhome.com/topics/6233 参考。
>> No webview version found from adb shell!
>> use default chromedriver version!
>> starting chromedriver service!
>> chromedriver bin path: D:\nodejs\node-global\node_modules\macaca-android\node
_modules\macaca-chromedriver\exec\chromedriver2.20.exe
>> Starting ChromeDriver 2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc1b)
on port 9516
Only local connections are allowed.
>> chromedriver starting success.
>> proxy.js:51:14 [master] pid:123744 Proxy: /status:GET to http://localhost:951
6/wd/hub/status:GET with body:
>> proxy.js:59:16 [master] pid:123744 Got response with status 200: "{\"sessionI
d\":\"\",\"status\":0,\"value\":{\"build\":{\"version\":\"alpha\"},\"os\":{\"arc
h\":\"x86_64\",\"name\":\"Windows NT\",\"version\":\"6.1.7601 SP1\"}}}"
>> proxy.js:51:14 [master] pid:123744 Proxy: /session:POST to http://localhost:9
516/wd/hub/session:POST with body: {"desiredCapabilities":{"chromeOptions":{"and
roidPackage":"com.github.android_app_bootstrap","androidUseRunningApp":true,"and
roidDeviceSerial":"ENU7N15B10002359"}}}
>> proxy.js:59:16 [master] pid:123744 Got response with status 200: {"sessionId"
:"081760a5bd6948c9d8b97d74c2051f50","status":100,"value":{"message":"chrome not
reachable\n (Driver info: chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1
943c01833cc1b),platform=W...
>> chromedriver ready with: {"sessionId":null,"status":100,"value":{"message":"c
hrome not reachable\n (Driver info: chromedriver=2.22.397933 (1cab651507b88dec7
9b2b2a22d1943c01833cc1b),platform=Windows NT 6.1.7601 SP1 x86_64)"}}
>> proxy.js:51:14 [master] pid:123744 Proxy: /wd/hub/session/:sessionId/window_h
andles:GET to http://localhost:9516/wd/hub/session/081760a5bd6948c9d8b97d74c2051
f50/window_handles:GET with body: {}
>> proxy.js:59:16 [master] pid:123744 Got response with status 200: {"sessionId"
:"081760a5bd6948c9d8b97d74c2051f50","status":6,"value":{"message":"no such sessi
on\n (Driver info: chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1943c018
33cc1b),platform=Windows ...
>> responseHandler.js:56:12 [master] pid:123744 Send Error Respone to Client: No
SuchDriver: no such session
(Driver info: chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc
1b),platform=Windows NT 6.1.7601 SP1 x86_64)
>> responseHandler.js:62:14 [master] pid:123744 NoSuchDriver: no such session
(Driver info: chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc
1b),platform=Windows NT 6.1.7601 SP1 x86_64)
at Object._.parseWebDriverResult (D:\nodejs\node-global\node_modules\macaca-
android\lib\helper.js:72:11)
at Android.getWebviews (D:\nodejs\node-global\node_modules\macaca-android\li
b\macaca-android.js:327:16)
at next (native)
at onFulfilled (D:\nodejs\node-global\node_modules\macaca-cli\node_modules\c
o\index.js:65:19)
at process._tickCallback (internal/process/next_tick.js:109:7)
>> responseHandler.js:78:14 [master] pid:123744 Send Bad HTTP Respone to Client[
2017-10-20 17:54:02]: {"sessionId":"06b85ea6-84c3-427a-8211-101f1c3ae587","statu
s":6,"value":{"message":"no such session\n (Driver info: chromedriver=2.22.3979
33 (1cab651507b88dec79b2b2a22d1943c01833cc1b),platform=Windows NT 6.1.7601 SP1 x
86_64)"}}
>> responseHandler.js:11:12 [master] pid:123744 Recieve HTTP Request from Client
[2017-10-20 17:54:02]: method: GET url: /wd/hub/session/06b85ea6-84c3-427a-8211-
101f1c3ae587/contexts, jsonBody: {}
>> proxy.js:51:14 [master] pid:123744 Proxy: /wd/hub/session/:sessionId/window_h
andles:GET to http://localhost:9516/wd/hub/session/081760a5bd6948c9d8b97d74c2051
f50/window_handles:GET with body: {}
>> proxy.js:59:16 [master] pid:123744 Got response with status 200: {"sessionId"
:"081760a5bd6948c9d8b97d74c2051f50","status":6,"value":{"message":"no such sessi
on\n (Driver info: chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1943c018
33cc1b),platform=Windows ...
>> responseHandler.js:56:12 [master] pid:123744 Send Error Respone to Client: No
SuchDriver: no such session
(Driver info: chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc
1b),platform=Windows NT 6.1.7601 SP1 x86_64)
>> responseHandler.js:62:14 [master] pid:123744 NoSuchDriver: no such session
(Driver info: chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc
1b),platform=Windows NT 6.1.7601 SP1 x86_64)
at Object._.parseWebDriverResult (D:\nodejs\node-global\node_modules\macaca-
android\lib\helper.js:72:11)
at Android.getWebviews (D:\nodejs\node-global\node_modules\macaca-android\li
b\macaca-android.js:327:16)
at next (native)
at onFulfilled (D:\nodejs\node-global\node_modules\macaca-cli\node_modules\c
o\index.js:65:19)
at process._tickCallback (internal/process/next_tick.js:109:7)
>> responseHandler.js:78:14 [master] pid:123744 Send Bad HTTP Respone to Client[
2017-10-20 17:54:02]: {"sessionId":"06b85ea6-84c3-427a-8211-101f1c3ae587","statu
s":6,"value":{"message":"no such session\n (Driver info: chromedriver=2.22.3979
33 (1cab651507b88dec79b2b2a22d1943c01833cc1b),platform=Windows NT 6.1.7601 SP1 x
86_64)"}}
>> responseHandler.js:11:12 [master] pid:123744 Recieve HTTP Request from Client
[2017-10-20 17:54:02]: method: DELETE url: /wd/hub/session/06b85ea6-84c3-427a-82
11-101f1c3ae587, jsonBody: {}
>> session.js:80:12 [master] pid:123744 Delete session, sessionId: 06b85ea6-84c3
-427a-8211-101f1c3ae587
>> responseHandler.js:49:14 [master] pid:123744 Send HTTP Respone to Client[2017
-10-20 17:54:02]: {"sessionId":"06b85ea6-84c3-427a-8211-101f1c3ae587","status":0
}
>> macaca-chromedriver.js:168:18 [master] pid:123744 chromedriver exit with code
: null, signal: SIGTERM
@harsayer
已经根据系统的 chrome 版本,选择了对应的驱动,一到官方 demo 的第 4 个切换网页的就挂了,这要如何解决,模拟器跟真机都挂了,换了好几个版本都不行
执行上述的自家 apk 测试脚本后,会弹出这个报错,有什么解决办法?
Traceback (most recent call last):
File "e:\Test\Python\Script\macaca.py", line 4, in <module>
from macaca import WebDriver
File "e:\Test\Python\Script\macaca.py", line 4, in <module>
from macaca import WebDriver
ImportError: cannot import name WebDriver
@harsayer 请教一个问题,环境是 win7。我安装 macaca-android 驱动的时候报错。这是我 SDKManager 里为何没有 android25.0.2 啊?
我这里的报错日志是 Checking the license for package Android SDK Build-Tools 25.0.2 in E:\ADT\sdk\licenses
Warning: License for package Android SDK Build-Tools 25.0.2 not accepted.
Checking the license for package Android SDK Platform 26 in E:\ADT\sdk\licenses
Warning: License for package Android SDK Platform 26 not accepted.
BUILD FAILED in 1m 53s
,
FAILURE: Build failed with an exception.
Warning: License for package Android SDK Build-Tools 25.0.2 not accepted.
Checking the license for package Android SDK Platform 26 in E:\ADT\sdk\licenses
Warning: License for package Android SDK Platform 26 not accepted.
提示你当初安装 sdk 的时候 没接受 licenses 许可协议。
这个可以先安装不接受 后续有解决方案 就是:
1 如果是 win10 环境
android-sdk-windows\tools\bin>sdkmanager --update
去你的 ***\tools\bin 目录执行下 sdkmanager --update 会出来两个许可提示 选 y 回车 即可
(sdkmanager --licenses win10 cmd 下 会提示不存在该参数 然后列出来许多可支持的参数 我看了下 选择了--update 后 就可以了.)
最后一个 可能会卡一会 等一会儿 在 ctrl+c 停止就可以了)
2 如果是 mac 或 ubuntu 环境
android-sdk-linux/tools> sdkmanager --licenses
然后目录下 会多个
再执行 macaca doctor 就不会有 红色的提示了
Not accepted Android SDK license agreements
@harsayer 我的 macaca -doctor 是没问题的
就是在 npm macaca-android -g 的时候没有生成 app-debug.apk,不知道是怎么回事!!!