zoukankan      html  css  js  c++  java
  • 答疑第三期 | 使用 Airtest 最常见的 8 大问题

     

    1.ImportError: DLL load failed: 找不到指定模块

    常见的DLL报错会出现在以下2种情况中:

    ① 在 cv2 模块报 ImportError: DLL load failed: 找不到指定模块 的错:

    根本原因应该是DLL文件的缺失,你可以直接下载一个最新版本的AirtestIDE,在解压后的目录中找到 api-ms-win-downlevel-shlwapi-l1-1-0.dll 和 IEShims.dll 两个DLL文件(或者自行在网上搜索这俩个DLL文件也是可以的),然后将它们复制到 C:WindowsSystem32 目录,重新运行代码即可解决。

    ② 若在 win.py 中 import win32api 时报 DLL load failed :

    <Module>
        import win32api
    ImportError: DLL load failed: 找不到指定的程序。

    建议您运行下列指令,更新为223版本的 pywin32

    pip uninstall pywin32
    pip install pywin32==223

    2. 各种常用的pip命令

    ① 安装Airtest库: pip install airtest

    ② 安装poco库: pip install pocoui

    ③ 更新Airtest: pip install -U airtest

    ④ 更新Poco: pip install -U pocoui

    ⑤ 卸载Airtest库: pip uninstall airtest

    特别注意:Poco依赖库是 pocoui 而不是 poco,如果你发现你的环境里面同时存在 poco 和 pocoui ,请务必把 poco 卸载了,留下 pocoui即可。

    另外,如果你的电脑同时安装了 python3 和 python2 ,在不同python环境里面使用pip命令时可以使用如下方法:

    # Python2
    pip2 install XXX
    python2 -m pip install XXX
    # Python3
    pip3 install XXX
    python3 -m pip install XXX

    3.查询Airtest版本号的方法

    查询本地环境中的Airtest版本可以使用如下俩种方法:

    ① 使用 pip list 命令,找到 Airtest 那一行查看。

    ② 使用 airtest version 命令,但注意该命令只对1.1.2以上的 Airtest 版本生效。

    4.自定义截图压缩精度

    当Airtest版本≥1.1.2时,我们可以自定义截图精度:

    ① 在本地运行脚本时自定义:

    # quality取值[1,99],airtest默认取10,希望获得更高精度可以取值75
    airtest run xxx --compress quality

    ② 在脚本中自定义(优先级高于在命令行自定义):

    自定义全局的截图压缩精度:

    import airtest.core.api import *
    ST.SNAPSHOT_QUALITY = xxx  

    自定义单张截图的压缩精度:

    snapshot(quality=my_quality)

    5.Airtest支持多设备运行吗

    Airtest支持 Android 和 iOS 的多设备运行,但是这些目前仅用在我们的收费的小型机柜方案私有云,外放的开源版本可以自己实现。

    另外,Airtest还支持Android设备的 多机协作功能 ,实操案例可以参考往期推文:“多机协作”--微信互加好友案例分析。

    6.怎样输入随机数字

    首先我们要利用python的 random 函数创建出符合要求的随机数;比如想要随机输入20-100的1个整数型随机数:

    import random
    r = random.randint(20,100)

    然后使用 text 接口完成随机数的输入,但要注意的是,text 接口传入的是一个字符串类型,所以把随机数传入 text 接口之前,要把刚才创建的随机数转化为字符串类型:

    text(str(random.randint(20,100)))

    这样我们就可以完成输入随机数字的需求啦。

    7.如何获取节点的text属性并打印

    Poco提供了 get_text() 和 get_name() 等方法让我们去读取UI的属性值,例如我们可以这样获取并打印下面这个节点的 text 属性和 name 属性:

    a = poco(text="联系人")
    
    print(a.get_text()) # 打印出:联系人
    print(a.get_name()) # 打印出:android.widget.TextView

    8.模拟器勾选上连接参数之后还是连不上

    之前跟大家强调过,连接模拟器的时候,我们需要勾选上一些备选的连接参数才能连接上模拟器,或者不让模拟器黑屏。

    比如连接雷电时需要勾选上 Use javacap,而连接夜神的时候需要勾选上 Use javacap 和 Use ADB orientation 这俩个选项。

    但是在一些版本的模拟器中,即使勾选上了连接参数,仍然可能连接不上模拟器,并出现如下的报错:

    这是因为在连接这些版本的模拟器时,不能自动安装上 Yosemite.apk ,我们可以通过手动安装这个 apk ,再重新连接模拟器即可。


     

    Airtest官网:http://airtest.netease.com/
    Airtest教程官网:https://airtest.doc.io.netease.com/
    搭建企业私有云服务:https://airlab.163.com/b2b

  • 相关阅读:
    如何在Windows,Linux下查看JAVA端口占用情况(阿里)
    Java超类-java.lang.object
    多线程-Thread的run()与start()的区别
    sleep、yield、wait、join的区别(阿里)
    SOA (面向服务的架构)-Service Oriented Architecture
    MySQL存储过程详解 mysql 存储过程
    navicat创建存储过程的小问题
    SVN使用教程
    #pragma的用法
    windows下远程连接Mysql
  • 原文地址:https://www.cnblogs.com/AirtestProject/p/12704933.html
Copyright © 2011-2022 走看看