专栏文章 连接模拟器出现黑屏或报错的解决办法

fishfish-yu · 2019年12月30日 · 最后由 fishfish-yu 回复于 2020年12月29日 · 6450 次阅读

此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

设备详情

  • Airtest IDE 版本:V1.2.2
  • 夜神模拟器版本:V6.5.0.3006
  • mumu 模拟器版本:V2.2.28(X86)
  • python 环境:
    • IDE 使用自带的 python3.6
    • 命令行使用本地的 python3.7
  • 电脑系统:Win10

IDE 连接模拟器的步骤

  1. 启动模拟器,打开设置-关于平板电脑-版本号,连续点击版本号 5 次以上,进入开发者模式
  2. 打开开发者模式,开启USB调试选项

  1. 点击 IDE 右侧的远程设备连接,输入adb connect + 模拟器对应端口号,点击连接(夜神模拟器的端口号为127.0.0.1:62001;mumu 模拟器的端口号为127.0.0.1:7555,其余模拟器端口号详见我们的官方文档)
  2. 当移动设备窗口出现对应的模拟器设备,下拉connect选项,勾选Use javacapUse ADB orientation选项,再单击connect即可

模拟器黑屏或报错

有时候同学们在连接模拟器的时候,会出现模拟器黑屏或者以下报错:

大部分情况都是因为在连接模拟器时,没有下拉勾选Use javacapUse ADB orientation这俩个选项。

需要注意的是,并不是所有版本的模拟器都要同时勾选上述俩个选项才能够连接。
有些版本的模拟器只需要勾选Use javacap即可解决模拟器黑屏或者报错的问题。所以在连接非本文给出的两个版本的模拟器,并出现问题时,可以先尝试勾选Use javacap看能不能解决,不能解决再把Use ADB orientation也勾选上。

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

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

在命令行传入模拟器设备参数

如果在命令行运行脚本时,连接的是模拟器设备,有一点需要注意,因为我们在连接时勾选了Use javacapUse ADB orientation这俩个选项,所以在命令行连接设备的时候,也需要把这俩个参数附加在设备字符串后面:

airtest run D:/test/moniqi_test.air --device Android://127.0.0.1:5037/127.0.0.1:62001?cap_method=JAVACAP^&^&ori_method=ADBORI --log E:/log_test
  1. 模拟器设备字符串的定义为: Android://<adbhost[localhost]>:<adbport[5037]>/模拟器端口号 其中,adbhostadb server所在主机的 ip,默认是本机127.0.0.1adb port默认是5037
  2. 设备字符串后面跟了多个参数,需要用&&来连接,但是&这个字符需要转义才能够生效: Windows 下改写成^&^&,MAC 下改写成/&/&

在脚本编写模拟器的 connect_device 语句

如果不想在命令行中传入设备参数,我们也可以在脚本内编写 connect_device 语句来连接模拟器设备:

# -*- encoding=utf8 -*-
__author__ = "xiaoming"

from airtest.core.api import *

dev = connect_device("Android://127.0.0.1:5037/127.0.0.1:62001?cap_method=JAVACAP^&^&ori_method=ADBORI")

auto_setup(__file__)

这样在命令行运行脚本时,就不用添加连接模拟器设备的参数了。

在纯.py 脚本传入模拟器设备参数

如果我们使用纯.py 脚本,在设备初始化时,也需要传入相应的模拟器设备参数:

# -*- encoding=utf8 -*-
__author__ = "xiaoming"

from airtest.core.api import *
from airtest.cli.parser import cli_setup

if not cli_setup():
    auto_setup(__file__, logdir=True, devices=[
            "Android://127.0.0.1:5037/127.0.0.1:62001?cap_method=JAVACAP^&^&ori_method=ADBORI",
    ])

如想向我们反馈关于 AirtestProject 想了解的问题,欢迎到公众号后台留言。

共收到 5 条回复 时间 点赞

补充了下即使勾选上连接参数还是无法连接模拟器的解决办法

目前遇到的问题是横屏的时候可以连上,但是翻转成竖屏就连不上😂

1.2.6 版本的 IDE 是吗

fishfish-yu 回复

airtestIDE 1.2.6
mumu 模拟器 2.4.7

先用 1.2.5 版本来测模拟器,这个问题下个版本的 IDE 会修复

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册