如何用Airtest脚本连接无线Android设备?

之前我们已经详细介绍过如何用AirtestIDE无线连接Android设备,它的关键点在于,需要先 adb connect 一次,才能点击 connect 按钮无线连接上该设备:

但是有很多同学,在使用纯Airtest脚本的形式连接无线设备时,还是遇到了一些困难。今天我们就继续无线连接这个话题,聊聊怎么用纯Airtest脚本连接无线Android设备。

2. 已知无线设备ip的连接方式

1)前置条件

假设我们的电脑,已经与我们的手机建立了无线连接的关系,且我们设置的通信端口为5555:

adb devices 能查询到我们的无线设备)

2)示例脚本

 
  1. # -*- encoding=utf8 -*-

  2. __author__ = "AirtestProject"

  3. from airtest.core.api import *

  4. auto_setup(__file__)

  5. connect_device("Android://127.0.0.1:5037/10.228.xx.xx:5555")

  6. snapshot(msg="尝试给无线设备截图")

需要注意,Android连接字符串为:Android://adbhost:adbport/serialno;对于无线设备,adbhost:adbport仍为本机adb:127.0.0.1:5037;serialno为无线设备的ip地址和port。

3. 未知无线设备ip的连接方式

1)前置条件

假设我们的电脑与手机,还未建立无线连接关系;但是当前手机wifi与电脑处在同一个局域网下,并且:

  • 用usb线连接了手机和电脑

  • 打开了手机USB调试选项、无线调试选项

2)示例脚本

示例脚本将自动完成:

  • 设置无线通信端口

  • 通过有线连接的方式,获取设备ip

  • 返回无线连接的字符串列表

 
  1. # -*- encoding=utf8 -*-

  2. __author__ = "AirtestProject"

  3. from airtest.core.api import *

  4. #导入了 airtest 库中的 ADB 类,这个类提供了与 Android 设备进行交互的方法

  5. from airtest.core.android.adb import ADB

  6. auto_setup(__file__)

  7. def adb_connect_devices():

  8. # 创建 ADB 实例

  9. adb = ADB()

  10. #获取设备的设备号列表

  11. devices = adb.devices()

  12. device_list = []

  13. for dev in devices:

  14. #设置端口号

  15. adb.cmd(f"-s {dev[0]} tcpip 5555", device=False)

  16. sleep(2)

  17. #初始化设备,并且设置为当前设备

  18. dev_connect = connect_device(f"Android:///{dev[0]}")

  19. # 获取当前设备IP地址

  20. ip = dev_connect.get_ip_address()

  21. #print(f"dev[0]的IP是{ip}")

  22. adb.cmd(f"connect {ip}:5555", device=False)

  23. device_list.append(f"Android://127.0.0.1:5037/{ip}:5555")

  24. return device_list

  25. if __name__ == '__main__':

  26. r = adb_connect_devices()

  27. print(r)

拿到返回的无线设备字符串列表之后,我们就可以断开数据线连接,愉快的使用无线连接方式了!

['Android://127.0.0.1:5037/10.228.xx.xx:5555', 'Android://127.0.0.1:5037/10.227.xx.xx:5555']

3)输出空列表

当我们看到返回的无线设备字符串列表为空时,应确保设备和电脑是成功连接的,并且打开usb调试和无线调试选项:

4. 小结

关于脚本连接无线设备的教程就到这里啦,更多教程可以查看我们的往期文章,或者有什么特别想看的教程,也欢迎给我们留言!

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/770143.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8s-网络原理-下篇

引言 本文是《深入剖析 K8s》的学习笔记,相关图片和案例可从https://github.com/WeiXiao-Hyy/k8s_example中获取,欢迎Star! K8s 的网络隔离: NetWorkPolicy K8s 如何考虑容器之间网络的“隔离” -> NetWorkPolicy 以下是一个 NetWorkPolicy 的定义…

Android开发 --- Android12外部存储权限问题

1.问题 Android12使用如下权限&#xff0c;将不会获得读写文件的权限 <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE" /> 2.解决 if (!Environment.isExternalStorageManager()) {Intent intent new Intent(Settings.ACTION_M…

将数据转换成xml格式的文档并下载

现在有一个实体类对象的集合&#xff0c;需要将它们转换为xml文档&#xff0c;xml文档就是标签集合的嵌套&#xff0c;例如一个学生类&#xff0c;有姓名、年龄等&#xff0c;需要转换成一下效果&#xff1a; <student><age>14</age><name>张三</na…

Java学习Day3

一道简单练习题&#xff0c;对编号进行随机排名 import java.util.Random; import java.util.Scanner;public class Main {public static void rand(int[] a,int n){Random rnew Random();for (int i0;i<n;i){int rrr.nextInt(n);int tempa[i];a[i]a[rr];a[rr]temp;}}publ…

时间戳的转换-unix时间戳转换为utc时间(python实现)

import datetimetimestamp = 1711358882# 将时间戳转换为UTC时间 utc_time = datetime.datetime.utcfromtimestamp(timestamp)# 格式化并输出时间 formatted_time = utc_time.strftime(%Y-%m-%d %H:%M:%S) print(formatted_time)同样:UTC如何转换为unix时间戳 from datetime …

如何利用python 把一个表格某列数据和另外一个表格某列匹配 类似Excel VLOOKUP功能

环境: python3.8.10 Excel2016 Win10专业版 问题描述: 如何利用python 把一个表格某列数据和另外一个表格某列匹配 类似Excel VLOOKUP功能 先排除两表A列空白单元格,然后匹配x1表格和x2表格他们的A列,把x1表格中A列A1-A810范围对应的B列B1-B810数据,匹配填充到x2范围…

C语言程序与设计——预处理命令

宏 在C语言中宏有三种形式: 定义符号常量定义傻瓜表达式定义代码段 在使用宏的过程中需要注意的是&#xff0c;宏的作用仅仅是在预处理阶段对代码进行替换&#xff0c;而非进行运算&#xff0c;所以在使用时&#xff0c;如果出现了我们预期之外的结果&#xff0c;很有可能是宏…

Spring IoC DI(1)

IoC & DI入门 Spring 通过前面的学习, 我们知道了Spring是一个开源框架, 它让我们的开发更加简单. 它支持广泛的应用场景, 有着活跃且庞大的社区, 这就是Spring能够长久不衰的原因. 但是这个概念还是比较抽象. 可以用更具体的话描述Spring, 那就是: Spring是包含了众多…

Jakarta项目介绍

概述 在升级Spring Boot到3.0版本以后&#xff0c;或升级Spring到6.0版本以上&#xff0c;会发现应用编译失败或启动失败等问题。 经过排查不难得知&#xff0c;Spring 6或Spring Boot 3&#xff08;实际上依赖于Spring 6&#xff09;不再支持javax.开头的一系列依赖包&#…

人工智能的迷惑行为:AI世界的隐秘角落

人工智能迷惑行为大赏 在当今数字化时代&#xff0c;人工智能技术的飞速发展给我们的生活带来了诸多便利和可能性&#xff0c;但同时也伴随着一些令人困惑的现象和行为。本文将深入探讨人工智能的迷惑行为&#xff0c;揭示AI世界中的隐秘角落&#xff0c;让我们一同探寻这个充…

《深入浅出LLM 》(二):大模型基础知识

&#x1f389;AI学习星球推荐&#xff1a; GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料&#xff0c;配有全面而有深度的专栏内容&#xff0c;包括不限于 前沿论文解读、…

CPU缓存行及伪共享

CPU Cache概述 随着CPU的频率不断提升&#xff0c;而内存的访问速度却没有质的突破&#xff0c;为了弥补访问内存的速度慢&#xff0c;充分发挥CPU的计算资源&#xff0c;提高CPU整体吞吐量&#xff0c;在CPU与内存之间引入了一级Cache。随着热点数据体积越来越大&#xff0c;…

代码随想录算法训练营第三十二天 | 122.买卖股票的最佳时机II ,55. 跳跃游戏 , 45.跳跃游戏II

贪心&#xff1a;只要把每一个上升区间都吃到手&#xff0c;就能一直赚 class Solution { public:int maxProfit(vector<int>& prices) {int res 0;for(int i 1;i< prices.size();i){int diff prices[i] - prices[i-1];if(prices[i] > prices[i-1]){res d…

蓝桥杯练习题总结(二)dfs题、飞机降落、全球变暖

目录 一、飞机降落 二、全球变暖 初始化和输入 确定岛屿 DFS搜索判断岛屿是否会被淹没 计算被淹没的岛屿数量 三、军训排队 一、飞机降落 问题描述&#xff1a; N架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 时刻到达机场上空&#xff0c;到达时它的剩余…

[Linux]文件缓冲区

文件fd 输出重定向除了用dup2()改变数组下标外&#xff0c;还可以用命令来完成 所有的命令执行&#xff0c;都必须有操作系统将其运行起来变成进程&#xff0c;然后根据>>, <<来判断是输入重定向&#xff0c;还是输出重定向。 缓冲区 之所以有缓冲区&#xff0…

JavaScript 基础、内置对象、BOM 和 DOM 常用英文单词总结

一提到编程、软件、代码。对于英语不是很熟悉的同学望而却步。其实没有想像中的难么难&#xff0c;反复练习加上自己的思考、总结&#xff0c;会形成肌肉记忆。整理一下&#xff0c;初学者每天30遍。 1、JavaScript 基础语法 break&#xff1a;中断循环或 switch 语句的执行。…

安卓转鸿蒙竟如此丝滑

随着鸿蒙的爆火&#xff0c;大家都想知道鸿蒙能不能搞&#xff1f; 相信大家搞开发的&#xff0c;都多多少少的了解过鸿蒙。近几个月鸿蒙的大动作也不少&#xff0c;如&#xff1a;重庆市近20个垂域应用与鸿蒙原生合作、深圳制定鸿蒙《行动计划》、阿里再次与鸿蒙展开合作&…

微信小程序开发技巧:canvas实现电子签名

在微信小程序中实现电子签名功能方式很多,本文采用canvas绘制的方式实现。具体实现步骤如下: 在页面中添加canvas元素 <view class"container"><canvas canvas-id"signCanvas" class"canvas" disable-scrolltrue touchstart"sta…

跨时钟域学习记录(一)

亚稳态 亚稳态是电平介于高低电平之间的一种暂时状态。在同步系统中&#xff0c;当寄存器的信号无法满足建立时间和保持时间时&#xff0c;输出端的信号就可能出现亚稳态。在异步系统中&#xff0c;亚稳态并非一定在建立时间和保持时间无法满足时出现。   受噪声、温度、电压…