NetEaseGame / ATX

Smart phone automation tool. Support iOS, Android, WebApp and game.
Apache License 2.0
1.57k stars 423 forks source link

多设备连接情况下,通过多线程执行脚本出错 #117

Closed mexth closed 7 years ago

mexth commented 7 years ago

脚本:

#coding: utf-8
import atx,time,sys,os,traceback

def RunTest(serials):
    from multiprocessing.dummy import Pool as ThreadPool
    pool = ThreadPool()
    pool.map(SingleTest, serials)   
    pool.close()
    pool.join()

def SingleTest(serialno):
    d = atx.connect(serialno)
    d.start_app( "com.mxtech.videoplayer.pro","com.mxtech.videoplayer.pro.ActivityMediaList")
    d(description="更多选项").click()
    ...主体脚本...

if __name__ == '__main__':
    RunTest(["5406a354","CB5A21SX9A"])

结果: 可以正常让两台手机打开相关的APP,但是执行d(description="更多选项").click()的时候就会出错,提示 IOError: command: "adb: error: failed to get feature set: more than one device/emulator

详细日志:

 Traceback (most recent call last):
   File "D:\python\11.py", line 55, in <module>
     RunTest(["5406a354","CB5A21SX9A"])
   File "D:\python\11.py", line 9, in RunTest
     pool.map(SingleTest, serials)
   File "C:\Python27\lib\multiprocessing\pool.py", line 251, in map
     return self.map_async(func, iterable, chunksize).get()
   File "C:\Python27\lib\multiprocessing\pool.py", line 567, in get
     raise self._value
 IOError: command: "adb: error: failed to get feature set: more than one device/emulator

 " exit: 1

系统 win10 64位,python2.7及3.5版本下都有这个问题 还请帮忙指教下,这类多台设备同时进行UI点击操作的情况怎么处理会比较合适.

codeskyblue commented 7 years ago

先markdown格式化一下,把运行时候的serial打印下

mexth commented 7 years ago

已经markdown 设备的serial就是 "5406a354","CB5A21SX9A" 用该脚本单独执行一个serial都可以完成的,一旦2个一起执行就会出错。 看打印信息说的像是无法同时通过adb连接超过一台的设备来获取控件信息。

codeskyblue commented 7 years ago

多谢反馈,问题已修复,更新atx到最新即可