Closed pastel001 closed 4 years ago
是的,用子线程可能会有一些问题,主要报错代码是这里 要不就是去掉线程,只在你的脚本里循环进行判断。 或者,要不可以考虑线程里面的截图不用默认的minicap,而是指定采用ADBCAP的方式来截图。也就是说,需要另外初始化一个device对象,用它来截图,写起来会比较麻烦。
这个是主线程和子线程都需要截图,然后产生的问题是吧。 swipe也需要截图吗?swipe可以不截图吗?
好的,关于aittest的学习,除了看代码,有什么其他的关于架构和模块的介绍文档吗? 直接看代码不一定看得懂。官网都是入门的指导。想学一学,谢谢啦
深入的架构和模块介绍的话暂时没有比官网文档更加详细的,你也可以微信关注公众号:AirtestProject,我们会定期推送一些文章,之前也发过一些文章可以参考
好的,谢谢
(请尽量按照下面提示内容填写,有助于我们快速定位和解决问题,感谢配合。否则直接关闭。)
(重要!问题分类)
描述问题bug 在airTest脚本中启动子线程,主线程swipe刷新,子线程检查图片,如果出现图片则进行点击。 但是要么手机没有反应,要么出现异常脚本终止。 出现异常脚本终止截图如下:
Traceback (most recent call last): File "airtest\cli\runner.py", line 65, in runTest File "site-packages\six.py", line 693, in reraise File "airtest\cli\runner.py", line 61, in runTest File "E:\AirtestIDE_2018-07-20_py3_win64\test_threading.air\test_threading.py", line 36, in
swipe([456,1355], vector=[0, 0.08],duration=0.01)
File "airtest\utils\logwraper.py", line 78, in wrapper
File "airtest\core\api.py", line 306, in swipe
File "airtest\utils\logwraper.py", line 78, in wrapper
File "airtest\core\cv.py", line 97, in try_log_screen
File "airtest\core\android\android.py", line 218, in snapshot
File "airtest\core\android\minicap.py", line 24, in wrapper
File "airtest\core\android\minicap.py", line 340, in get_frame_from_stream
ValueError: generator already executing
脚本一直卡主,没有反应,截图如下:
相关截图 (贴出遇到问题时的截图内容,如果有的话) (在AirtestIDE里产生的图像和设备相关的问题,请贴一些AirtestIDE控制台黑窗口相关报错信息)
复现步骤 执行脚本 `# -- encoding=utf8 -- author = "Administrator"
from airtest.core.api import * import threading
ST.FIND_TIMEOUT = 1 ST.FIND_TIMEOUT_TMP = 0.1
auto_setup(file)
connect_device("android:///")
def t1_swipe(): while True: swipe([456,1355], vector=[0, 0.08],duration=0.01)
def t2_check_and_get(): while True: exist = find_all(Template(r"tpl1575165525423.png", threshold=0.96, target_pos=2, record_pos=(0.393, -0.001), resolution=(1080, 1920))) if exist: x = exist[0].get("result")[0] y = [r.get("rectangle")[0][1] for r in exist] y.sort() touch((x,y[0]),2)
t1 = threading.Thread(target=t1_swipe)
t2 = threading.Thread(target=t2_check_and_get)
t1.start()
t2.start()
while True: swipe([456,1355], vector=[0, 0.08],duration=0.01)`
预期效果 期望可以看到脚本一边下拉刷新,一边循环判断是否出现图片,然后点击图片
python 版本:
使用的是IDE内置的python环境,没有在IDE的setting中自定义python.exe的路径
系统环境变量python是2.7.12 C:\Users\Administrator>python --version Python 2.7.12
airtest 版本:
1.2.2
设备:
其他相关环境信息 (其他运行环境,例如在linux ubuntu16.04上运行异常,在windows上正常。)