如何用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. 小结

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

 

总结:

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

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

软件测试面试文档

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

 

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IObit Uninstaller Pro:一键强力卸载,让您的电脑焕然一新

在数字化时代,电脑已经成为我们生活和工作中不可或缺的一部分。然而,随着我们使用电脑的时间越来越长,安装的软件也越来越多,电脑的性能往往会逐渐下降,甚至出现卡顿、崩溃等问题。这些问题往往源于一些难以卸载的顽固…

[蓝桥杯 2020 省 AB1] 网络分析

一开始写的暴力合并 卡n^2过的不是正解 看正解是类似 虚拟点树形DP的思路 很巧妙 记录一下 #include<bits/stdc.h> using namespace std; using ll long long; using pii pair<int,int>; #define int long long const int N 3e510; const int inf 0x3f3f3f3f; …

STL ④ —— 哈希

1. 散列表 根据 key 计算 key 在表中的位置的数据结构&#xff1b;是 key 和其所在存储地址的映射关系&#xff0c;即 hash(key) % size index struct node{void *key;void *value;struct node *next; };2. hash函数 2.1 hash函数的特点 计算速度快强随机分布性&#xff0…

由浅到深认识Java语言(21):Math类

该文章Github地址&#xff1a;https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板&#xff08;Github仓库地址&#xff1a;https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址&#xff1a;https://blog.c…

Spring IoC DI(1)

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

HAL STM32G4内部运放的使用

HAL STM32G4内部运放的使用 &#x1f4cd;相关篇《HAL STM32G4 ADC手动触发采集各种滤波算法实现》&#x1f388;《HAL STM32G4 TIM1 3路PWM互补输出VOFA波形演示》 ✨继欧拉电子无刷电机驱动相关视频学习&#xff0c;STM32G4内部运放的使用。主要是为了采集无刷电机&#xff0…

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

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

C语言栈和队列(个人笔记)

栈和队列 栈1.1栈的概念和结构1.2栈的实现 队列2.1队列的概念及结构2.2队列的实现2.3循环队列 栈和队列笔试题3.1[有效的括号](https://leetcode.cn/problems/valid-parentheses/submissions/516297357/)3.2[用队列实现栈](https://leetcode.cn/problems/implement-stack-using…

c盘清理软件绿色免安装版老电脑的福音

家里有一台老电脑笔记本&#xff0c;10年前的产品了&#xff0c;内存也不大&#xff0c;只有2G&#xff0c;安装360后&#xff0c;就卡的不行了&#xff0c;安装他的目的其实就是为了定期清理一下C盘空间&#xff0c;为了解决这个问题&#xff0c;于是做了一下研究&#xff0c;…

【Java常用API】正则表达式练习

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

安卓转鸿蒙竟如此丝滑

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

文件操作3

随机读写数据文件 一、随机读写原理 在我们写数据时&#xff0c;有一个光标不断的在随着新写入的数据往后移动&#xff1b; 而读数据时&#xff0c;也有一个看不见光标&#xff0c;随着已经读完的数据&#xff0c;往后移动 这里的文件读写位置标记——可以想象成图形界面里的…

计算机程序的编译和链接

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

代码随想录第20天| 654.最大二叉树 617.合并二叉树

654.最大二叉树 654. 最大二叉树 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.com) 又是构造二叉树&#xff0c;又有很多坑&#xff01;| LeetCode&#xff1a;654.最大二叉树_哔哩哔哩_bilibili 给定一个不重复的整数数组 nums 。 最大二叉树 可以…

python+selenium做ui自动化测试用法必会

一、前言 大家都知道&#xff0c;基于Web端的测试的基础框架是需要Selenium做主要支撑的&#xff0c;这里边给大家介绍下Web测试核心之基于Python的Selenium Selenium是用于测试Web应用程序用户界面(UI)的常用框架。它是一款用于运行端到端功能测试的超强工具。您可以使用多个编…

ExperimentalWarning: The http2 module is an experimental API.

错误提示 Node.js:ExperimentalWarning: The fs.promises API is experimental原因是node的版本不是最新的&#xff0c;而在项目引入的模块是最新的&#xff0c;node.js的版本低于模块的版本&#xff1a; 解决方法: 1、升级版本 npm install -g npm 更新npm到最新版 npm ins…

MyBatis3源码深度解析(二十一)动态SQL实现原理(二)动态SQL解析过程、#{}和${}的区别

文章目录 前言8.5 动态SQL解析过程8.5.1 SQL配置转换为SqlSource对象8.5.2 SqlSource转换为静态SQL语句 8.6 #{}和${}的区别8.7 小结 前言 在【MyBatis3源码深度解析(二十)动态SQL实现原理(一)动态SQL的核心组件】中研究了MyBatis动态SQL相关的组件&#xff0c;如SqlSource用于…

vue.js制作学习计划表案例

通俗易懂&#xff0c;完成“学习计划表”用于对学习计划进行管理&#xff0c;包括对学习计划进行添加、删除、修改等操作。 一. 初始页面效果展示 二.添加学习计划页面效果展示 三.修改学习计划完成状态的页面效果展示 四.删除学习计划 当学习计划处于“已完成”状态时&…

Linux基础-Makefile

目录 一、Make简介 二、Makefile基本结构 示例&#xff1a; 补充(Makefile)&#xff1a; 伪目标&#xff1a; 三、创建和使用变量 变量定义的方式&#xff1a; 简单方式&#xff1a; 递归方式&#xff1a; 用?定义变量 为变量添加值 预定义变量 例 自动变量 例…

C++函数模板详解(结合代码)

目录 1. 模板概念 2. 函数模板语法 3. 函数模板注意事项 4. 函数模板案例 5. 普通函数与函数模板的区别 6. 普通函数与函数模板的调用规则 7. 模板的局限性 1. 模板概念 在C中&#xff0c;模板是一种通用的程序设计工具&#xff0c;它允许我们处理多种数据类型而不是固…