Giter VIP home page Giter VIP logo

poco's People

Contributors

adolli avatar android-a-studio avatar danand avatar dinghongyi avatar erachen233 avatar evangelistic avatar felixonmars avatar firyuen avatar hboprc avatar howarden34 avatar linzecong avatar meteorix avatar rockywhisper avatar suyuchen123 avatar yaming116 avatar yimelia avatar zzldjkzxf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

poco's Issues

UnityPoco(unity_editor=True) 会报错

如果用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"

Wrong x, y position of element

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)

连续测试,部分测试案例异常

运行环境: 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

PocoHierarchyViewer连不上测试设备(三星SM-G9350)

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

connet timeout

经常会出现连接超时的问题,不管是用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

UI-hierachy tree of airtestIDE does not display properly

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

my-testflow中总是提示 raise RuntimeError("start recording error")

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版本。

poco断开连接后,不会自动重新连接

使用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] ',))
>>>

命令行生成报告,html 图片显示错误

airtest report /Users/XXX/Desktop/XXXX/FunctionTest.air --log_root /Users/XXX/Desktop/XXX/TestReport

执行上述命令生成log.html 时候,图片显示错误。在 FunctionTest.air 中依赖于另一个BaseFunction.air 文件。图片错误的截图文件都在BaseFunction.air 中。
snipaste_2018-07-17_21-33-07

[poco android]toast和每步骤截图问题

  1. 有没有方法获取到android上的toast
  2. 每个步骤都会进行截图,我想不截图,请问是在这里关闭吗
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:

PocoHierarchyViewer一直显示处理中

os: win10 home
software:1.0.1:一直显示“处理中”
airtestIDE V0.0.14 显示正常
关闭airtestIDE 后,PocoHierarchyViewer 再重新打开;也是显示“处理中”

2
1

测试用例 方案投票 [[[ Click Me! How to write testcase voting ]]]

airtest和poco提供两种编写测试用例的方案,该投票想了解一下大家对测试用例编写、运行等需求,以便我们确定重点开发方向。两种方案我们的框架都是兼容的,不用担心以后不支持的问题。

  1. test.air/: 使用.air的目录组织测试用例,一个.air对应一个用例
  2. python库: 按照标准的python库去组织所有用例,整个库包含项目所有的用例

请在下面两层楼的大拇指上投票,👍或者👎。 �有想法或建议请跟楼评论

unity官方实例rollaball做测试发现的问题

打开unity官方实例roll a ball,将unity3d sdk导入,挂载pocomanager于ground对象上,然后打apk包,安装至手机。打开aittest,选择unity,发现左侧poco辅助窗没有将原本所有的ui树遍历出来。比如,player对象,或是本能展开的节点也不能展开了。

poco wait_for_appearance()函数失效

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

屏幕旋转方向后,minitouch需要处理旋转的变化

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)
  1. minitouch的坐标原点始终是手机正放时候的左上角,屏幕旋转方向后,minitouch需要处理旋转的变化,不然在非正放的其它三个屏幕方向上会有问题,比如运行上面的代码,click的100,100和minitouch的100,100是不一样的

  2. 模拟器默认的横屏分辨率设置下, minitouch的坐标原点会在横屏的左上角

  3. 平板还没试过

BTW:模拟器是最多只能两点触控的吗?模拟器上运行上面的代码不会出现3点

运行U3D脚本提示PRC关闭

IDE vesrsion:0.1.2
Devices:魅族M5,华为荣耀8
录制了一个简单的点击脚本,运行较大概率提示:poco.utils.simplerpc.simplerpc.RpcConnectionError: Rpc Connection Closed

2 92r85 t soaadkmlm4o7y

也偶尔会有通过的情况。

运行poco().click报错, 但是单独在airtestIDE跑这段语句正常

报错信息:
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)

pip(10.0.0) install pocoui error

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

connect error

I used adb forward to connect but it just told me 'no module named drivers.unity3d'
I've upgraded poco and pocoui already.
Still let me upgrade.
image

经试验,在我这里两个设备,后插上电脑的会启动PocoService,先插上的不会启动

发现使用先插上电脑设备的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

出现Connection aborted错误

环境:
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'))

求大神们如何解决此问题

请问下UIObjectProxy有方法可以更新自己么?

比如这种使用环境:
界面上存在2个同样名字的ui,然后迭代这2个ui,第一次循环会对第1个ui进行点击,但是会导致第2个ui的位置发生变化,在第2次循环的时候就会点到第2个ui老的位置了(而不是我想要的变化后的位置)。

有没有方法能类似下面这样操作:

for ui in poco('name'):
    ui.update()  #是否存在某个方法能直接更新自己,保证点到的都是最新的位置?
    ui.click()  #这个操作会导致下一个要点击的ui元素的对象发生变化

PocoTest PseultPlayer 两个测试结果相互干扰

1Example中的CalculatorPlus是之前的结果 里面有个
CalculatorPlus(Customized-Name)是最近跑的结果

当选择CalculatorPlus(Customized-Name)的时候,播放的确是两个合起来的,让人搞不清楚

win10 远程主机强迫关闭了一个现有的连接。

"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] 远程主机强迫关闭了一个现有的连接。

建议poco加入父节点的方法判定

poco没有父节点的方法判定,我想排除这个最近使用中列出来的语言列表。
其实,我只要有方法通过判定我获得到的所有叶子节点中
其中的每个的叶子节点的,第三级别的父节点是不是“ name : com.xxx.xxx:id/recent_listview”就好了
但是poco没有这个方法.

image

tim 20180602180258

测试脚本成功完成,ok之后报错:ImportError: sys.meta_path is None, Python is likely shutting down

  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
`

return cls._result_emitters.get(name) AttributeError: 'NoneType' object has no attribute 'get'

测试环境:
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'

RuntimeError: unable to launch AndroidUiautomationPoco

环境:
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 设备测试,也报出一样的错误。

test-flow自动安装pocoservice,无法点击授权框

现在testflow自己安装卸载 pocosrevice ,也会弹出授权框,手机没法点击过去。
这个在那里修改呀。
我安装自己的应用都是用adb shell install,然后检查是否有弹出框,手动点击的。
tim 20180606100152

poco.drivers.android ConnectionError

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)

ImportError: cannot import name Poco

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

list[]问题

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上调试的时候没有问题,跑起来就报这个错

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.