airtestproject / poco Goto Github PK
View Code? Open in Web Editor NEWA cross-engine test automation framework based on UI inspection
Home Page: http://airtest.netease.com/
License: Apache License 2.0
A cross-engine test automation framework based on UI inspection
Home Page: http://airtest.netease.com/
License: Apache License 2.0
如果用UnityPoco(unity_editor=True),会报错pywinauto.findwindows.ElementNotFoundError: {'class_name': 'UnityWndClass', 'title_re': 'Unity.*', 'backend': 'win32'}
poco/drivers/unity3d/unity3d_poco.py
def __init__(self, addr=DEFAULT_ADDR, unity_editor=False, connect_default_device=True, **options):
if 'action_interval' not in options:
options['action_interval'] = 0.5
dev = None
if unity_editor:
dev = connect_device("Windows:///?class_name=UnityWndClass&title_re=Unity.*")
game_window = dev.app.top_window().child_window(title="UnityEditor.GameView")
dev._top_window = game_window.wrapper_object()
dev.focus_rect = (0, 40, 0, 0)
Unity editor的window class应该是 "UnityContainerWndClass"
Unity player (a Unity build game) 的window class才是 "UnityWndClass"
应该是执行了adb.exe -s 127.0.0.1:7555 shell 导致的,脚本可以正常运行但体验不是很好。
I'm testing native Android application with text menu, and trying to iterate via every menu item.
The problem with poco in the following:
poco(text='menu item text').click()
this code sometimes doesn't click anything (but sometimes works fine).
The following code:
pos = poco(text='menu item text').get_position()
y = pos[1] * poco.device.display_info['height']
touch([100, y])
sometimes clicking wrong elements, because get_position() method returns the same Y value for two different menu items.
What we can use to properly click the item if poco lib detects it on the view? How to properly detect the Y position of item? Why sometimes it works, but sometimes - no? (for the same app&menu)
最近在学习poco框架,提的问题有点多~~~
poco.utils.simplerpc
不兼容python3
运行环境: centos 7, shell脚本启动python, shell脚本内容(运行测试脚本前后添加启动app、关闭app命令)
adb -s $device shell am force-stop $package
adb -s $device shell am start -n $package/$activity
python -m airtest run /export/home/pwtestsvn/xtest/PwTestCase/pwrd/$game/$testcase --device $platform://$ip:$port/$device --log $logDir
adb -s $device shell am force-stop $package
问题描述:连续多次运行同一脚本,部分测试案例失败,报如下错误。 去掉重启app过程,则正常运行
[11:31:21][DEBUG]<airtest.core.android.adb> /export/home/pwtestenv/python3.6/lib/python3.6/site-packages/airtest/core/android/static/adb/linux/adb -P 5037 -s Q8W0215215006810 wait-for-device
[11:31:21][DEBUG]<airtest.core.android.adb> /export/home/pwtestenv/python3.6/lib/python3.6/site-packages/airtest/core/android/static/adb/linux/adb -P 5037 -s Q8W0215215006810 shell getprop ro.build.version.sdk
[11:31:21][DEBUG]<airtest.utils.logwraper> main_script: {'script': '/export/home/pwtestsvn/xtest/PwTestCase/pwrd/qyz/brun6.test.air'}
[11:31:21][DEBUG]<airtest.core.android.adb> /export/home/pwtestenv/python3.6/lib/python3.6/site-packages/airtest/core/android/static/adb/linux/adb -P 5037 -s Q8W0215215006810 forward --no-rebind tcp:14414 tcp:5001
E
======================================================================
ERROR: setUpClass (airtest.cli.runner.MyTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/export/home/pwtestsvn/xtest/PwTestCase/pwrd/qyz/brun6.test.air/brun6.test.py", line 19, in setUpClass
cls.poco = UnityPoco()
File "/export/home/pwtestenv/python3.6/lib/python3.6/site-packages/poco/drivers/unity3d/unity3d_poco.py", line 56, in __init__
super(UnityPoco, self).__init__(addr[1], dev, **options)
File "/export/home/pwtestenv/python3.6/lib/python3.6/site-packages/poco/drivers/std/__init__.py", line 90, in __init__
agent = StdPocoAgent((ip, port))
File "/export/home/pwtestenv/python3.6/lib/python3.6/site-packages/poco/drivers/std/__init__.py", line 29, in __init__
self.c.wait_connected()
File "/export/home/pwtestenv/python3.6/lib/python3.6/site-packages/poco/utils/simplerpc/rpcclient.py", line 57, in wait_connected
raise RuntimeError("Connection Closed")
RuntimeError: Connection Closed
----------------------------------------------------------------------
Ran 0 tests in 0.627s
FAILED (errors=1)
======================================================================
ERROR: runTest (airtest.cli.runner.AirtestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/export/home/pwtestenv/python3.6/lib/python3.6/site-packages/airtest/cli/runner.py", line 61, in runTest
exec(compile(code.encode("utf-8"), pyfilepath, 'exec'), self.scope)
File "/export/home/pwtestsvn/xtest/PwTestCase/pwrd/qyz/brun6.test.air/brun6.test.py", line 49, in <module>
pocounit.main()
File "/export/home/pwtestenv/python3.6/lib/python3.6/site-packages/pocounit/__init__.py", line 48, in main
exit(-1)
File "/export/home/pwtestenv/python3.6/lib/python3.6/site.py", line 403, in __call__
raise SystemExit(code)
SystemExit: -1
----------------------------------------------------------------------
Ran 1 test in 0.799s
FAILED (errors=1)
[11:31:21][DEBUG]<airtest.core.android.adb> /export/home/pwtestenv/python3.6/lib/python3.6/site-packages/airtest/core/android/static/adb/linux/adb -P 5037 -s Q8W0215215006810 forward --remove tcp:14414
libwebsockets.txt
libwebsockets_airtest.txt
PS:后缀名是 (.h),上传的时候不支持改格式改成txt了
我在log查看里看了一下,无论是否选中checked都是False,还有这个是用哪个方法获取呢
D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\adbkit\node_modules\bluebird…:479 Unhandled rejection Error: Invalid filename
at new ApkReader (D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\node-apk-parser\lib\apkreader.js:27:17)
at Function.ApkReader.readFile (D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\node-apk-parser\lib\apkreader.js:16:14)
at E (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:57004)
at file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:57606
at tryCatcher (D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\adbkit\node_modules\bluebird\js\main\util.js:26:23)
at Promise._settlePromiseFromHandler (D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\adbkit\node_modules\bluebird\js\main\promise.js:503:31)
at Promise._settlePromiseAt (D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\adbkit\node_modules\bluebird\js\main\promise.js:577:18)
at Async._drainQueue (D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\adbkit\node_modules\bluebird\js\main\async.js:128:12)
at Async._drainQueues (D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\adbkit\node_modules\bluebird\js\main\async.js:133:10)
at MutationObserver.Async.drainQueues (D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\adbkit\node_modules\bluebird\js\main\async.js:15:14)
at process._tickCallback (internal/process/next_tick.js:103:7)
warn @ D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\adbkit\node_modules\bluebird…:479
CapturedTrace.formatAndLogError @ D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\adbkit\node_modules\bluebird…:195
CapturedTrace.fireRejectionEvent @ D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\adbkit\node_modules\bluebird…:250
Promise._notifyUnhandledRejection @ D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\adbkit\node_modules\bluebird…:38
Async._drainQueue @ D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\adbkit\node_modules\bluebird…:128
Async._drainQueues @ D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\adbkit\node_modules\bluebird…:135
Async.drainQueues @ D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\adbkit\node_modules\bluebird…:15
_tickCallback @ internal/process/next_tick.js:103
index.js:1 GET http://127.0.0.1:10080/screen?width=720 net::ERR_CONNECTION_REFUSED
h._onFinish @ index.js:1
(anonymous) @ index.js:1
r.emit @ index.js:1
j @ index.js:1
S @ index.js:1
l.end @ index.js:1
h.end @ index.js:1
s.end @ index.js:1
e @ index.js:1
(anonymous) @ index.js:1
runCallback @ timers.js:651
tryOnImmediate @ timers.js:624
processImmediate @ timers.js:596
D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\bluebird\js\release\debuggab…:865 Unhandled rejection RequestError: TypeError: Failed to fetch
at new r (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1700648)
at s.l.callback (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1702525)
at s.e.callback.t.callback [as _callback] (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1701967)
at n._callback.n.callback.n.callback (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1725395)
at s.r.emit (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:685454)
at s.onRequestError (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1733877)
at t.exports.r.emit (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:685454)
at file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1861950
From previous event:
at a.d [as _captureStackTrace] (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:288623)
at a._resolveFromExecutor (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:323992)
at new a (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:316283)
at s.l.init (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1701811)
at s.e.request.Request.init (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1700107)
at new s (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1723702)
at i (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1705143)
at t.value (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:59203)
at t.value (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:17304)
at Object.r (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1483689)
at r (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1424502)
at Object.executeDispatchesInOrder (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1425541)
at d (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1421100)
at m (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1421226)
at Array.forEach (native)
at t.exports (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1529476)
at Object.processEventQueue (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1422284)
at r (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1483939)
at Object.handleTopLevel [as _handleTopLevel] (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1484025)
at a (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1484505)
at r.perform (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1525031)
at Object.batchedUpdates (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1481245)
at Object.batchedUpdates (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1506730)
at dispatchEvent (file:///D:/Work%20Tools/PocoHierarchyViewer-win32-x64/resources/app/lib/js-build/viewer/index.js:1:1485522)
printWarning @ D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\bluebird\js\release\debuggab…:865
formatAndLogError @ D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\bluebird\js\release\debuggab…:590
fireRejectionEvent @ D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\bluebird\js\release\debuggab…:615
Promise._notifyUnhandledRejection @ D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\bluebird\js\release\debuggab…:61
Async._drainQueue @ D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\bluebird\js\release\async.js:138
Async._drainQueues @ D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\bluebird\js\release\async.js:146
Async.drainQueues @ D:\Work Tools\PocoHierarchyViewer-win32-x64\resources\app\node_modules\bluebird\js\release\async.js:17
index.js:1 GET http://127.0.0.1:10080/screen_size net::ERR_CONNECTION_REFUSED
h._onFinish @ index.js:1
(anonymous) @ index.js:1
r.emit @ index.js:1
j @ index.js:1
S @ index.js:1
l.end @ index.js:1
h.end @ index.js:1
s.end @ index.js:1
e @ index.js:1
(anonymous) @ index.js:1
runCallback @ timers.js:651
tryOnImmediate @ timers.js:624
processImmediate @ timers.js:596
index.js:1 GET http://127.0.0.1:10080/hierarchy net::ERR_CONNECTION_REFUSED
h._onFinish @ index.js:1
(anonymous) @ index.js:1
r.emit @ index.js:1
j @ index.js:1
S @ index.js:1
l.end @ index.js:1
h.end @ index.js:1
s.end @ index.js:1
e @ index.js:1
(anonymous) @ index.js:1
runCallback @ timers.js:651
tryOnImmediate @ timers.js:624
processImmediate @ timers.js:596
经常会出现连接超时的问题,不管是用airtest命令行执行还是直接调用py文件
error log>>>:
<poco.utils.simplerpc.transport.tcp.asynctcp.Client localhost:16667 at 0xb1a30c8> is connected
[10:37:15][DEBUG]<airtest.core.android.adb> C:\Python27\lib\site-packages\airtest\core\android\static\adb\windows\adb.exe -s 57e5b1d4 forward --no-rebind tcp:13930 tcp:5001
waiting for connection...1
Connecting to host at: ('localhost', 13930)
<poco.utils.simplerpc.transport.tcp.asynctcp.Client at 0xb1a3b48> is connected
LOOP_THREAD ALREADY STARTED: <LoopThread(simplerpc_update, started daemon 8052)>
waiting for connection...0
waiting for connection...1
waiting for connection...2
waiting for connection...3
waiting for connection...4
waiting for connection...5
waiting for connection...6
waiting for connection...7
waiting for connection...8
waiting for connection...9
Traceback (most recent call last):
File "D:/HCR����/��������-�����/�Զ������/Scrips/Skin.air/Skin.py", line 16, in <module>
from Common.Gm import *
File "D:\HCR����\��������-�����\�Զ������\Scrips\Common\Gm.py", line 15, in <module>
from Common.CommonUI import *
File "D:\HCR����\��������-�����\�Զ������\Scrips\Common\CommonUI.py", line 6, in <module>
poco = UnityPoco()
File "C:\Python27\lib\site-packages\poco\drivers\unity3d\unity3d_poco.py", line 56, in __init__
super(UnityPoco, self).__init__(addr[1], dev, **options)
File "C:\Python27\lib\site-packages\poco\drivers\std\__init__.py", line 88, in __init__
agent = StdPocoAgent((ip, port))
File "C:\Python27\lib\site-packages\poco\drivers\std\__init__.py", line 29, in __init__
self.c.wait_connected()
File "C:\Python27\lib\site-packages\poco\utils\simplerpc\rpcclient.py", line 58, in wait_connected
raise RuntimeError("connecting timeout")
RuntimeError: connecting timeout
[10:37:20][DEBUG]<airtest.core.android.adb> C:\Python27\lib\site-packages\airtest\core\android\static\adb\windows\adb.exe -s 57e5b1d4 forward --remove tcp:14566
[10:37:20][DEBUG]<airtest.core.android.adb> C:\Python27\lib\site-packages\airtest\core\android\static\adb\windows\adb.exe -s 57e5b1d4 forward --remove tcp:16667
[10:37:20][DEBUG]<airtest.core.android.adb> C:\Python27\lib\site-packages\airtest\core\android\static\adb\windows\adb.exe -s 57e5b1d4 forward --remove tcp:13930
<LoopThread(simplerpc_update, started daemon 8052)> finished
目前本地排查usb线连接正常,手机也是刚买不久
log.txt
connect device and choose android mode in Poco Assistant windows. But the UI-hierachy tree has nothing. The background error message is:
initializing Android poco.
[08:00:49][DEBUG]<airtest.core.android.adb> C:\AIRTES~2\airtest\core\android\sta
tic\adb\windows\adb.exe -P 5037 -s c250ac03 shell dumpsys activity top
[08:00:49][DEBUG]<airtest.core.android.adb> C:\AIRTES~2\airtest\core\android\sta
tic\adb\windows\adb.exe -P 5037 -s c250ac03 shell settings get secure default_in
put_method
[08:00:49][DEBUG]<airtest.core.android.adb> C:\AIRTES~2\airtest\core\android\sta
tic\adb\windows\adb.exe -P 5037 -s c250ac03 shell ime list -a
[08:00:49][DEBUG]<airtest.core.android.adb> C:\AIRTES~2\airtest\core\android\sta
tic\adb\windows\adb.exe -P 5037 -s c250ac03 shell dumpsys package com.netease.op
en.pocoservice
installed version is 37, installer version is 37. force_reinstall=False
[08:00:49][DEBUG]<airtest.core.android.adb> C:\AIRTES~2\airtest\core\android\sta
tic\adb\windows\adb.exe -P 5037 -s c250ac03 shell dumpsys package com.netease.op
en.pocoservice.test
installed version is 0, installer version is 0. force_reinstall=False
[08:00:49][DEBUG]<airtest.core.android.adb> C:\AIRTES~2\airtest\core\android\sta
tic\adb\windows\adb.exe -P 5037 -s c250ac03 forward --no-rebind tcp:18897 tcp:10
080
[08:00:49][DEBUG]<airtest.core.android.adb> C:\AIRTES~2\airtest\core\android\sta
tic\adb\windows\adb.exe -P 5037 -s c250ac03 forward --no-rebind tcp:17535 tcp:10
081
[08:00:49][DEBUG]<airtest.core.android.adb> C:\AIRTES~2\airtest\core\android\sta
tic\adb\windows\adb.exe -P 5037 -s c250ac03 shell ps
[08:00:50][DEBUG]<airtest.core.android.adb> C:\AIRTES~2\airtest\core\android\sta
tic\adb\windows\adb.exe -P 5037 -s c250ac03 shell am force-stop com.netease.open
.pocoservice
[08:00:50][DEBUG]<airtest.core.android.adb> C:\AIRTES~2\airtest\core\android\sta
tic\adb\windows\adb.exe -P 5037 -s c250ac03 shell am start -n com.netease.open.p
ocoservice/.TestActivity
[08:00:50][DEBUG]<airtest.core.android.adb> C:\AIRTES~2\airtest\core\android\sta
tic\adb\windows\adb.exe -P 5037 -s c250ac03 shell am instrument -w -e debug fals
e -e class com.netease.open.pocoservice.InstrumentedTestAsLauncher com.netease.o
pen.pocoservice.test/android.support.test.runner.AndroidJUnitRunner
No JSON object could be decoded
05:17:42][DEBUG]<airtest.core.android.adb> D:\WebSafe\AndroidTest\venv\lib\site-packages\airtest\core\android\static\adb\windows\adb.exe -s 3bba3962 shell CLASSPATH=/data/app/com.netease.nie.yosemite--bPpUoxtbUl1v7ix5sXJhA==/base.apk exec app_process -Dduration=1800 /system/bin com.netease.nie.yosemite.Recorder --start-record
[05:17:43][DEBUG]<airtest.utils.nbsp> [328019016]'browsing http://10.66.206.25:8686/start<?filename=xxx.mp4> to start recording!'
[05:17:43][DEBUG]<airtest.utils.nbsp> [328019016]'then using http://10.66.206.25:8686/download to stop and download recording.'
[05:17:43][DEBUG]<airtest.utils.nbsp> [328019016]'or using http://10.66.206.25:8686/stop to stop the recording server.'
[05:17:44][DEBUG]<airtest.utils.nbsp> [328019016]'[socket][0] connection /127.0.0.1:8686;LocalPort=-1(0)'
[05:17:44][DEBUG]<airtest.utils.nbsp> [328019016]'[socket][/127.0.0.1:41526] connected'
[05:17:44][DEBUG]<airtest.utils.nbsp> [328019016]'get current display size...'
[05:17:44][DEBUG]<airtest.utils.nbsp> [328019016]'get display size...'
EndOfStream: 328019016
D:\WebSafe\AndroidTest\venv\lib\site-packages\pocounit\case.py:187: UserWarning: Fail to start result emitter: "ScreenRecorder". You can report this error to the developers or just ignore it. Error message:
"Traceback (most recent call last):
File "D:\WebSafe\AndroidTest\venv\lib\site-packages\pocounit\case.py", line 183, in run
emitter.start()
File "D:\WebSafe\AndroidTest\venv\lib\site-packages\pocounit\result\record.py", line 39, in start
self.started[udid] = self.start_device_recorder(udid, dev)
File "D:\WebSafe\AndroidTest\venv\lib\site-packages\pocounit\result\record.py", line 64, in start_device_recorder
success = device.start_recording()
File "D:\WebSafe\AndroidTest\venv\lib\site-packages\airtest\core\android\android.py", line 506, in start_recording
return self.recorder.start_recording(*args, **kwargs)
File "D:\WebSafe\AndroidTest\venv\lib\site-packages\airtest\utils\snippet.py", line 101, in ready_func
return func(inst, *args, **kwargs)
File "D:\WebSafe\AndroidTest\venv\lib\site-packages\airtest\core\android\recorder.py", line 53, in start_recording
raise RuntimeError("start recording error")
RuntimeError: start recording error
"
.format(emitter.__class__.__name__, traceback.format_exc()))
---------------,进入文本翻译,设置好翻译的原来的语言为中文
[05:17:55][DEBUG]<airtest.utils.logwraper> >sleep Time used: 2.007000s
[05:17:55][DEBUG]<airtest.utils.logwraper> function: {'time_used': 2.006999969482422, 'args': (2,), 'name': 'sleep', 'ret': None, 'kwargs': {}}
.[05:17:55][DEBUG]<airtest.core.android.adb> D:\WebSafe\AndroidTest\venv\lib\site-packages\airtest\core\android\static\adb\windows\adb.exe -s 3bba3962 shell am force-stop com.ape.translator
exiting.......
[05:17:56][DEBUG]<airtest.utils.logwraper> >stop_app Time used: 0.210000s
[05:17:56][DEBUG]<airtest.utils.logwraper> function: {'time_used': 0.21000003814697266, 'args': ('com.ape.translator',), 'name': 'stop_app', 'ret': None, 'kwargs': {}}
----------------------------------------------------------------------
Ran 1 test in 29.081s
OK
[05:17:56][DEBUG]<airtest.core.android.adb> D:\WebSafe\AndroidTest\venv\lib\site-packages\airtest\core\android\static\adb\windows\adb.exe -s 3bba3962 forward --remove tcp:11649
[05:17:56][DEBUG]<airtest.core.android.adb> D:\WebSafe\AndroidTest\venv\lib\site-packages\airtest\core\android\static\adb\windows\adb.exe -s 3bba3962 forward --remove tcp:18398
Process finished with exit code 0
测试环境:
android 8.1系统
测试原生apk
win10 home basic版本。
使用powershell
建立连接 ,然后操作,插拔了手机和usb线的连接
还是会出现没有连接的情况
pip install -U pocoui
Requirement already up-to-date: pocoui in c:\python27\lib\site-packages (1.0.50)
window 10 basic
>>> containpoco.scroll(ordination)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\poco\proxy.py", line 405, in scroll
return self.focus(focus1).drag_to(self.focus(focus2), duration=duration)
File "C:\Python27\lib\site-packages\poco\proxy.py", line 371, in drag_to
target_pos = target.get_position()
File "C:\Python27\lib\site-packages\poco\proxy.py", line 507, in get_position
x, y = self.attr('pos')
File "C:\Python27\lib\site-packages\poco\proxy.py", line 39, in wrapped
return func(self, *args, **kwargs)
File "C:\Python27\lib\site-packages\poco\proxy.py", line 620, in attr
nodes = self._do_query(multiple=False)
File "C:\Python27\lib\site-packages\poco\proxy.py", line 755, in _do_query
self._nodes = self.poco.agent.hierarchy.select(self.query, multiple)
File "C:\Python27\lib\site-packages\poco\utils\hrpc\hierarchy.py", line 27, in select
return self.selector.select(query, multiple)
File "C:\Python27\lib\site-packages\hrpc\object_proxy.py", line 88, in __call__
return self._client__.evaluate(self.__call_no_evaluate__(remote_obj_cache, *args))
File "C:\Python27\lib\site-packages\hrpc\client.py", line 64, in evaluate
self.transport.send({'id': reqid, 'uri': obj_proxy._uri__, 'method': obj_proxy._invocation_path__})
File "C:\Python27\lib\site-packages\hrpc\transport\http.py", line 19, in send
r = requests.post(self.endpoint, data=json.dumps(req), headers={'Content-Type': 'application/json'})
File "C:\Python27\lib\site-packages\requests\api.py", line 112, in post
return request('post', url, data=data, json=json, **kwargs)
File "C:\Python27\lib\site-packages\requests\api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Python27\lib\site-packages\requests\sessions.py", line 508, in request
resp = self.send(prep, **send_kwargs)
File "C:\Python27\lib\site-packages\requests\sessions.py", line 618, in send
r = adapter.send(request, **kwargs)
File "C:\Python27\lib\site-packages\requests\adapters.py", line 508, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=18092): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000000003775278>: Failed to establish a new connection: [Errno 10061] ',))
>>>
def __init__(self, device=None, using_proxy=True, force_restart=False, use_airtest_input=False, **options):
# 加这个参数为了不在最新的pocounit方案中每步都截图
self.screenshot_each_action = True
if options.get('screenshot_each_action') is False:
self.screenshot_each_action = False
if not device:
分辨率问题,求请适配一下,手上使用的机型是红米5plus
airtest和poco提供两种编写测试用例的方案,该投票想了解一下大家对测试用例编写、运行等需求,以便我们确定重点开发方向。两种方案我们的框架都是兼容的,不用担心以后不支持的问题。
请在下面两层楼的大拇指上投票,👍或者👎。 �有想法或建议请跟楼评论
翻了好几遍文档,没有找到
打开unity官方实例roll a ball,将unity3d sdk导入,挂载pocomanager于ground对象上,然后打apk包,安装至手机。打开aittest,选择unity,发现左侧poco辅助窗没有将原本所有的ui树遍历出来。比如,player对象,或是本能展开的节点也不能展开了。
try:
poco('Button_11', type='Button').wait_for_appearance()
print('aaa')
except PocoTargetTimeout:
print('bbb')
raise # bugs here as the panel not show
print('ccc')
部分代码块如上,执行 wait_for_appearance() 语句之前,该界面还没有出来(例如刚启动app),但在这30秒之内(例如15s左右)该界面能出来,
实测结果发现还是执行了timeout 即raise操作
是我对 wait_for_appearance() 理解不对后使用不对,还是当前该函数可能还需要完善?
另外,如果在执行 wait_for_appearance() 语句之前,该界面就已存在,则不会执行timeout操作
测试环境:
AirtestIDE_2018-06-19_v0.1.1_py3_win64
$ python -V
Python 3.6.5
$ pip freeze
airtest==1.0.17
apkutils==0.2.8
certifi==2018.4.16
chardet==3.0.4
cigam==0.0.3
comtypes==1.1.4
facebook-wda==0.2.1
hrpc==1.0.4
idna==2.7
Jinja2==2.10
MarkupSafe==1.0
numpy==1.14.5
opencv-contrib-python==3.2.0.7
Pillow==5.1.0
pocoui==1.0.52
pocounit==1.0.33
pyelftools==0.24
pypiwin32==223
pywin32==223
pywinauto==0.6.3
requests==2.19.1
six==1.11.0
urllib3==1.23
websocket-client==0.48.0
xmltodict==0.11.0
from airtest.core.api import *
from airtest.core.android.minitouch import *
# dev=connect_device("Android://127.0.0.1:5037/127.0.0.1:7555?cap_method=JAVACAP&ori_method=ADBORI") #mumu模拟器
dev=connect_device("Android:///") #手机
click([100,100])
multitouch_event = [
DownEvent((100, 100), 0),
DownEvent((200, 200), 1),
DownEvent((300, 300), 2),
SleepEvent(1),
UpEvent(0), UpEvent(1),UpEvent(2)]
dev.minitouch.perform(multitouch_event)
sleep(1)
minitouch的坐标原点始终是手机正放时候的左上角,屏幕旋转方向后,minitouch需要处理旋转的变化,不然在非正放的其它三个屏幕方向上会有问题,比如运行上面的代码,click的100,100和minitouch的100,100是不一样的
模拟器默认的横屏分辨率设置下, minitouch的坐标原点会在横屏的左上角
平板还没试过
BTW:模拟器是最多只能两点触控的吗?模拟器上运行上面的代码不会出现3点
报错信息:
Error
Traceback (most recent call last):
File "C:\sgame\scripts\test002.py", line 31, in test_change_name
poco("imgHead").click()
File "C:\Python27\lib\site-packages\poco\proxy.py", line 23, in wrapped
return func(proxy, *args, **kwargs)
File "C:\Python27\lib\site-packages\poco\proxy.py", line 283, in click
pos_in_percentage = self.get_position(focus)
File "C:\Python27\lib\site-packages\poco\proxy.py", line 499, in get_position
pos = self.attr('pos')
File "C:\Python27\lib\site-packages\poco\proxy.py", line 39, in wrapped
return func(self, *args, **kwargs)
File "C:\Python27\lib\site-packages\poco\proxy.py", line 620, in attr
nodes = self._do_query(multiple=False)
File "C:\Python27\lib\site-packages\poco\proxy.py", line 755, in _do_query
self._nodes = self.poco.agent.hierarchy.select(self.query, multiple)
File "C:\Python27\lib\site-packages\poco\freezeui\hierarchy.py", line 89, in select
return self.selector.select(query, multiple)
File "C:\Python27\lib\site-packages\poco\sdk\Selector.py", line 77, in select
return self.selectImpl(cond, multiple, self.getRoot(), 9999, True, True)
File "C:\Python27\lib\site-packages\poco\sdk\Selector.py", line 70, in getRoot
return self.dumper.getRoot()
File "C:\Python27\lib\site-packages\poco\freezeui\hierarchy.py", line 35, in getRoot
root = Node(self.dumpHierarchy())
File "C:\Python27\lib\site-packages\poco\utils\simplerpc\utils.py", line 13, in new_func
ret, err = cb.wait(timeout=30)
File "C:\Python27\lib\site-packages\poco\utils\simplerpc\simplerpc.py", line 72, in wait
self.agent.update()
File "C:\Python27\lib\site-packages\poco\utils\simplerpc\rpcclient.py", line 61, in update
data = self.conn.recv()
File "C:\Python27\lib\site-packages\poco\utils\simplerpc\transport\tcp\main.py", line 32, in recv
msg_bytes = self.c.recv()
File "C:\Python27\lib\site-packages\poco\utils\simplerpc\transport\tcp\safetcp.py", line 39, in recv
trunk = self.sock.recv(size)
error: [Errno 10053]
下面是代码:
device = connect_device("Android:///")
poco = StdPoco(15004, device)
class test002(unittest.TestCase):
def setUp(self):
print "开始启动游戏"
normal_start()
def test_change_name(self):
sleep(10.0)
# open_setting_panel()
if poco("imgHead").exists:
print("点击设置按钮")
poco("imgHead").click()
sleep(2.0)
touch(Template(pic_dir_setting + r"edit_name.png"))
def tearDown(self):
print "执行完毕了,现在关闭游戏"
normal_exit()
if __name__ == '__main__':
unittest.main()
但是单独在airtestIDE里 ,运行这段报错代码是正常的 。
if poco("imgHead").exists:
print("点击设置按钮")
poco("imgHead").click()
sleep(2.0)
This is console log
$ pip install -U pocoui
Collecting pocoui
Using cached pocoui-1.0.35.tar.gz
Requirement not upgraded as not directly required: six in c:\users\hzsunshx\appdata\roaming\python\python36\site-package
s (from pocoui) (1.11.0)
Requirement not upgraded as not directly required: requests in c:\python36\lib\site-packages (from pocoui) (2.18.4)
Requirement not upgraded as not directly required: airtest in c:\python36\lib\site-packages (from pocoui) (1.0.5)
Collecting hrpc (from pocoui)
Using cached hrpc-1.0.3.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\hzsunshx\AppData\Local\Temp\pip-install-av0desud\hrpc\setup.py", line 4, in <module>
from pip.req import parse_requirements
ModuleNotFoundError: No module named 'pip.req'
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\hzsunshx\AppData\Local\Temp\pip-install-av0desud
\hrpc\
This can be hot fixed by downgrade pip version to 9.0.1
python -m pip install -U pip==9.0.1
发现使用先插上电脑设备的poco获取控件会获取不到。
两个设备都为 Android,电脑为 Mac 10.13。
对比两次的 adb devices, 可以发现设备的先后顺序不一致,可能与此有关:
(venv3_6) mac@MacPro ~/M/R/P/TestingTool> adb devices
List of devices attached
e6fdf487 device
54AGE17JJ71802 device
⏎ (venv3_6) mac@MacPro ~/M/R/P/TestingTool> adb devices
List of devices attached
54AGE17JJ71802 device
e6fdf487 device
环境:
mac
android7.1.1
实现功能:一直下拉加载更多
在下拉一定时间后会导致如下错误:
[2018-04-28 06:09:02][ERROR] ('Connection aborted.', BadStatusLine("''",))
Exception requests.exceptions.ConnectionError: ConnectionError(ProtocolError('Connection aborted.', error(54, 'Connection reset by peer')),) in <bound method RpcObjectProxy.__del__ of u'<Rpc remote object proxy of com.netease.open.libpoco.Node@5a4eb9c>'> ignored
Exception requests.exceptions.ConnectionError: ConnectionError(ProtocolError('Connection aborted.', error(54, 'Connection reset by peer')),) in <bound method RpcObjectProxy.__del__ of u'<Rpc remote object proxy of com.netease.open.libpoco.Node@68ccf0f>'> ignored
Exception requests.exceptions.ConnectionError: ConnectionError(ProtocolError('Connection aborted.', error(54, 'Connection reset by peer')),) in <bound method RpcObjectProxy.__del__ of u'<Rpc remote object proxy of com.netease.open.libpoco.Node@7ef1c6e>'> ignored
Exception requests.exceptions.ConnectionError: ConnectionError(ProtocolError('Connection aborted.', error(54, 'Connection reset by peer')),) in <bound method RpcObjectProxy.__del__ of u'<Rpc remote object proxy of com.netease.open.libpoco.Node@c64d7e9>'> ignored
Exception requests.exceptions.ConnectionError: ConnectionError(ProtocolError('Connection aborted.', error(54, 'Connection reset by peer')),) in <bound method RpcObjectProxy.__del__ of u'<Rpc remote object proxy of com.netease.open.libpoco.Node@7d4b870>'> ignored
Exception requests.exceptions.ConnectionError: ConnectionError(ProtocolError('Connection aborted.', error(54, 'Connection reset by peer')),) in <bound method RpcObjectProxy.__del__ of u'<Rpc remote object proxy of com.netease.open.libpoco.Node@1a33ab3>'> ignored
Exception requests.exceptions.ConnectionError: ConnectionError(ProtocolError('Connection aborted.', error(54, 'Connection reset by peer')),) in <bound method RpcObjectProxy.__del__ of u'<Rpc remote object proxy of [Lcom.netease.open.libpoco.sdk.AbstractNode;@e1b2022>'> ignored
Exception requests.exceptions.ConnectionError: ConnectionError(ProtocolError('Connection aborted.', error(54, 'Connection reset by peer')),) in <bound method RpcObjectProxy.__del__ of u'<Rpc remote object proxy of [Lcom.netease.open.libpoco.sdk.AbstractNode;@af4917a>'> ignored
[2018-04-28 06:09:02][ERROR] ('Connection aborted.', error(54, 'Connection reset by peer'))
求大神们如何解决此问题
比如这种使用环境:
界面上存在2个同样名字的ui,然后迭代这2个ui,第一次循环会对第1个ui进行点击,但是会导致第2个ui的位置发生变化,在第2次循环的时候就会点到第2个ui老的位置了(而不是我想要的变化后的位置)。
有没有方法能类似下面这样操作:
for ui in poco('name'):
ui.update() #是否存在某个方法能直接更新自己,保证点到的都是最新的位置?
ui.click() #这个操作会导致下一个要点击的ui元素的对象发生变化
1Example中的CalculatorPlus是之前的结果 里面有个
CalculatorPlus(Customized-Name)是最近跑的结果
当选择CalculatorPlus(Customized-Name)的时候,播放的确是两个合起来的,让人搞不清楚
"Traceback (most recent call last):
File "D:\WebSafe\AndroidTest\venv3\lib\site-packages\urllib3\connectionpool.py", line 600, in urlopen
chunked=chunked)
File "D:\WebSafe\AndroidTest\venv3\lib\site-packages\urllib3\connectionpool.py", line 384, in _make_request
six.raise_from(e, None)
File "<string>", line 2, in raise_from
File "D:\WebSafe\AndroidTest\venv3\lib\site-packages\urllib3\connectionpool.py", line 380, in _make_request
httplib_response = conn.getresponse()
File "d:\python36\Lib\http\client.py", line 1331, in getresponse
response.begin()
File "d:\python36\Lib\http\client.py", line 297, in begin
version, status, reason = self._read_status()
File "d:\python36\Lib\http\client.py", line 258, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "d:\python36\Lib\socket.py", line 586, in readinto
return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
def find_and_scroll(cls, main_id, root_id, find_id):
'''
查找一个可以通过滚动找到的控件 找到后返回控件
:param main_id 滚动参考元素resourceId 或者 className
:param root_id resourceId 或者 className, 用于根元素设定
:param find_id resourceId 或者 className,需要查找的元素
:return: 返回poco对象 或者None
'''
temp = []
flag = 3
while True:
id_temps = []
for i in poco(main_id).children():
id_temps.append(i.get_name())
# 开始查找元素
if poco(root_id).exists():
for p in poco(root_id).offspring():
print(p.get_name(), end="\n\n-----\n")
if p.get_name() == find_id:
print("这里返回了P")
return p
else:
for p in poco(main_id).offspring():
if p.get_name() == find_id:
print("这里返回了P eles")
return p
# 滚动 处理
poco.scroll(percent=0.3, duration=0.2)
if temp == id_temps:
flag -= 1
print('还有{}次机会'.format(flag))
if not flag:
return
else:
flag = 3
temp = id_temps
整个脚本只执行这一个方法
脚本日志
...
...
...
--------------------------------------------------------------
Ran 1 test in 41.414s
OK
[10:01:18][DEBUG]<airtest.core.android.adb> /Users/xxx/venv/lib/python3.6/site-packages/airtest/core/android/static/adb/mac/adb -s HKR4C15811018547 forward --remove tcp:17810
[10:01:18][DEBUG]<airtest.core.android.adb> /Users/xxx/venv/lib/python3.6/site-packages/airtest/core/android/static/adb/mac/adb -s HKR4C15811018547 forward --remove tcp:19793
Exception ignored in: <bound method RpcObjectProxy.__del__ of '<Rpc remote object proxy of com.netease.open.libpoco.Node@19aff031>'>
Traceback (most recent call last):
File "/Users/xxx/venv/lib/python3.6/site-packages/hrpc/object_proxy.py", line 110, in __del__
File "/Users/xxx/venv/lib/python3.6/site-packages/hrpc/client.py", line 64, in evaluate
File "/Users/xxx/venv/lib/python3.6/site-packages/hrpc/transport/http.py", line 19, in send
File "/Users/xxx/venv/lib/python3.6/site-packages/requests/api.py", line 112, in post
File "/Users/xxx/venv/lib/python3.6/site-packages/requests/api.py", line 58, in request
File "/Users/xxx/venv/lib/python3.6/site-packages/requests/sessions.py", line 499, in request
File "/Users/xxx/venv/lib/python3.6/site-packages/requests/sessions.py", line 672, in merge_environment_settings
File "/Users/xxx/venv/lib/python3.6/site-packages/requests/utils.py", line 692, in get_environ_proxies
File "/Users/xxx/venv/lib/python3.6/site-packages/requests/utils.py", line 676, in should_bypass_proxies
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 2612, in proxy_bypass
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 2589, in proxy_bypass_macosx_sysconf
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 2536, in _proxy_bypass_macosx_sysconf
ImportError: sys.meta_path is None, Python is likely shutting down
Exception ignored in: <bound method RpcObjectProxy.__del__ of '<Rpc remote object proxy of [Lcom.netease.open.libpoco.sdk.AbstractNode;@188d2db5>'>
Traceback (most recent call last):
File "/Users/xxx/venv/lib/python3.6/site-packages/hrpc/object_proxy.py", line 110, in __del__
File "/Users/xxx/venv/lib/python3.6/site-packages/hrpc/client.py", line 64, in evaluate
File "/Users/xxx/venv/lib/python3.6/site-packages/hrpc/transport/http.py", line 19, in send
File "/Users/xxx/venv/lib/python3.6/site-packages/requests/api.py", line 112, in post
File "/Users/xxx/venv/lib/python3.6/site-packages/requests/api.py", line 58, in request
File "/Users/xxx/venv/lib/python3.6/site-packages/requests/sessions.py", line 499, in request
File "/Users/xxx/venv/lib/python3.6/site-packages/requests/sessions.py", line 672, in merge_environment_settings
File "/Users/xxx/venv/lib/python3.6/site-packages/requests/utils.py", line 692, in get_environ_proxies
File "/Users/xxx/venv/lib/python3.6/site-packages/requests/utils.py", line 676, in should_bypass_proxies
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 2612, in proxy_bypass
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 2589, in proxy_bypass_macosx_sysconf
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 2536, in _proxy_bypass_macosx_sysconf
ImportError: sys.meta_path is None, Python is likely shutting down
`
测试环境:
Win10 +myTestFlow
出现错误。
======================================================================
ERROR: setUpClass (__main__.TCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "D:\WebSafe\my-testflow\testflow\lib\case\android_app.py", line 21, in setUpClass
meta_info_emitter = cls.get_result_emitter('metaInfo')
File "D:\WebSafe\AndroidTest\venv\lib\site-packages\pocounit\case.py", line 144, in get_result_emitter
return cls._result_emitters.get(name)
AttributeError: 'NoneType' object has no attribute 'get'
环境:
PC Windows 7
Android 8.0 OnePlus 3
`
poco、airtest、my-testflow都是clone的github上最新的版本,poco、airtest用pip install -e xxx命令安装,
执行my-testflow的example,报出以下错误:
E:\auto_test\my-testflow>python testflow\scripts\example.py
this testcase filename is "E:\auto_test\my-testflow\testflow\scripts\example.py"
.
using "C:\Python27\lib\site-packages" as project root. This testcase is "PocoTes
tSuite"
testcase locates in "C:\Python27\lib\site-packages\pocounit\suite.py"
using "E:\auto_test\my-testflow" as project root. This testcase is "CalculatorPl
us"
testcase locates in "E:\auto_test\my-testflow\testflow\scripts\example.py"
log filename will be "E:\auto_test\my-testflow\pocounit-results\testflow\scripts
\example\CalculatorPlus (customized name)\poco-result.log"
log filename will be "E:\auto_test\my-testflow\pocounit-results\testflow\scripts
\example\CalculatorPlus (customized name)\metainfo.txt"
[06:43:31][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe devices
[06:43:37][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe devices
[06:43:37][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e wait-for-device
[06:43:37][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell getprop ro.build.version.sdk
[06:43:37][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell cat /proc/cpuinfo
[06:43:37][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell getprop ro.product.manufactur
er
[06:43:37][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell df /data
[06:43:37][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell cat /sys/devices/system/cpu/c
pu0/cpufreq/cpuinfo_max_freq
[06:43:37][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell dumpsys meminfo
[06:43:43][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell dumpsys SurfaceFlinger
[06:43:43][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell getprop ro.product.model
[06:43:43][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell dumpsys display
[06:43:43][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell dumpsys activity top
[06:43:43][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell dumpsys package com.netease.n
ie.yosemite
[06:43:43][INFO]<airtest.core.android.yosemite> local version code is 285, insta
lled version code is 285
[06:43:43][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell settings get secure default_i
nput_method
[06:43:43][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell ime list -a
[06:43:44][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell dumpsys package com.netease.o
pen.pocoservice
installed version is 37, installer version is 37. force_reinstall=False
[06:43:44][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell dumpsys package com.netease.o
pen.pocoservice.test
installed version is 0, installer version is 0. force_reinstall=False
[06:43:44][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e forward --no-rebind tcp:18342 tcp:1
0080
[06:43:44][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e forward --no-rebind tcp:12434 tcp:1
0081
[06:43:44][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell ps
[06:43:44][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell am force-stop com.netease.ope
n.pocoservice
[06:43:44][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell am start -n com.netease.open.
pocoservice/.TestActivity
[06:43:44][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell am instrument -w -e debug fal
se -e class com.netease.open.pocoservice.InstrumentedTestAsLauncher com.netease.
open.pocoservice.test/android.support.test.runner.AndroidJUnitRunner
still waiting for uiautomation ready.
still waiting for uiautomation ready.
still waiting for uiautomation ready.
still waiting for uiautomation ready.
still waiting for uiautomation ready.
still waiting for uiautomation ready.
still waiting for uiautomation ready.
still waiting for uiautomation ready.
still waiting for uiautomation ready.
still waiting for uiautomation ready.
[06:43:57][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e uninstall com.netease.open.pocoserv
ice
[06:43:57][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell dumpsys package com.netease.o
pen.pocoservice
installed version is None, installer version is 37. force_reinstall=False
[06:43:58][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e install e:\auto_test\poco\poco\driv
ers\android\lib\pocoservice-debug.apk
[06:43:59][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell dumpsys package com.netease.o
pen.pocoservice.test
installed version is 0, installer version is 0. force_reinstall=True
[06:43:59][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e install -r e:\auto_test\poco\poco\d
rivers\android\lib\pocoservice-debug-androidTest.apk
[06:44:01][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell am force-stop com.netease.ope
n.pocoservice
[06:44:01][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell am start -n com.netease.open.
pocoservice/.TestActivity
[06:44:01][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell am instrument -w -e debug fal
se -e class com.netease.open.pocoservice.InstrumentedTestAsLauncher com.netease.
open.pocoservice.test/android.support.test.runner.AndroidJUnitRunner
still waiting for uiautomation ready.
still waiting for uiautomation ready.
still waiting for uiautomation ready.
still waiting for uiautomation ready.
still waiting for uiautomation ready.
still waiting for uiautomation ready.
still waiting for uiautomation ready.
still waiting for uiautomation ready.
still waiting for uiautomation ready.
still waiting for uiautomation ready.
[06:44:13][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e shell dumpsys activity top
EERROR: setUpClass (__main__.CalculatorPlus)
Traceback (most recent call last):
File "e:\auto_test\my-testflow\testflow\lib\case\android_app.py", line 24, in
setUpClass
cls.poco = AndroidUiautomationPoco(screenshot_each_action=False)
File "e:\auto_test\poco\poco\drivers\android\uiautomation.py", line 173, in __
init__
raise RuntimeError("unable to launch AndroidUiautomationPoco")
RuntimeError: unable to launch AndroidUiautomationPoco
Ran 0 tests in 42.373s
FAILED (errors=1)
[06:44:13][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e forward --remove tcp:18342
[06:44:13][DEBUG]<airtest.core.android.adb> e:\auto_test\airtest\airtest\core\an
droid\static\adb\windows\adb.exe -s f089294e forward --remove tcp:12434
这并不是第一次执行example.py,第一次执行example会自动安装Yosemite,但是com.google.android.calculator.apk并不会安装,同时第一次执行example,也会报一样的错误。
使用Android 6.0(三星S3)设备测试,正常。可以自动启动计算器,并且测试成功。
使用Android 9.0 设备测试,也报出一样的错误。
poco.agent.hierarchy.dump() 方法互获取元素,能否实现获取当前页面的元素。目前使用 poco.agent.hierarchy.dump() 获取的元素特别多,感觉是整个APP的所有元素
Exception ignored in: <bound method RpcObjectProxy.__del__ of '<Rpc remote object proxy of com.netease.open.libpoco.Node@c2100c1>'>
Traceback (most recent call last):
File "D:\WebSafe\AndroidTest\venv3\lib\site-packages\hrpc\object_proxy.py", line 110, in __del__
self._client__.evaluate(RpcObjectProxy(self._uri__, self._client__, action), wait_for_response=False)
File "D:\WebSafe\AndroidTest\venv3\lib\site-packages\hrpc\client.py", line 64, in evaluate
self.transport.send({'id': reqid, 'uri': obj_proxy._uri__, 'method': obj_proxy._invocation_path__})
File "D:\WebSafe\AndroidTest\venv3\lib\site-packages\hrpc\transport\http.py", line 19, in send
r = requests.post(self.endpoint, data=json.dumps(req), headers={'Content-Type': 'application/json'})
File "D:\WebSafe\AndroidTest\venv3\lib\site-packages\requests\api.py", line 112, in post
return request('post', url, data=data, json=json, **kwargs)
File "D:\WebSafe\AndroidTest\venv3\lib\site-packages\requests\api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "D:\WebSafe\AndroidTest\venv3\lib\site-packages\requests\sessions.py", line 512, in request
resp = self.send(prep, **send_kwargs)
File "D:\WebSafe\AndroidTest\venv3\lib\site-packages\requests\sessions.py", line 622, in send
r = adapter.send(request, **kwargs)
File "D:\WebSafe\AndroidTest\venv3\lib\site-packages\requests\adapters.py", line 495, in send
raise ConnectionError(err, request=request)
Traceback (most recent call last):
File "D:\pycharm-professional-2017.2.3\PyCharm 2017.2.3\helpers\pydev\pydevd.py", line 1599, in
globals = debugger.run(setup['file'], None, None, is_module)
File "D:\pycharm-professional-2017.2.3\PyCharm 2017.2.3\helpers\pydev\pydevd.py", line 1026, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "D:/UIAutomator.py", line 13, in
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
File "D:\Django\python\lib\site-packages\poco\drivers\android\uiautomation.py", line 23, in
from poco import Poco
ImportError: cannot import name Poco
2_11: Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\AutoTest\wsfUIauto\TestCase\test_02_regmaster.py", line 135, in test_11_reg
h1 = self.poco("com.wanshifu.myapplication:id/container").child("android.widget.LinearLayout")[2].child("android.widget.RelativeLayout").child("android.widget.LinearLayout").child("com.wanshifu.myapplication:id/rcv_items").child("android.widget.LinearLayout")[0].child("com.wanshifu.myapplication:id/root").child("com.wanshifu.myapplication:id/tv_content").get_text()
File "E:\python\lib\site-packages\poco\proxy.py", line 201, in __getitem__
return self._sorted_children[item][0]
IndexError: list index out of range
IDE上调试的时候没有问题,跑起来就报这个错
libwebsockets_airtest.txt
libwebsockets.txt
不好意思,刚才那个问题不小心给关了,
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.