如何用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,一经查实,立即删除!

相关文章

odoo中,使用paramiko库ssh连接Linux

在 Python 中,可以使用 Paramiko 库来实现 SSHClient 连接。Paramiko 是一个用于远程登录、文件传输和自动化的 SSH 客户端库。 import paramiko# 创建 SSHClient 对象 ssh paramiko.SSHClient()# 设置自动添加主机密钥 ssh.set_missing_host_key_policy(paramiko.…

K8s-网络原理-下篇

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

气候模型与大模型结合的高精度天气预报技术研究

1. 背景介绍 随着全球气候变化的加剧,天气预报的准确性变得越来越重要。传统的气候模型在预测长期气候变化方面取得了显著进展,但在短期天气预报方面仍存在一定的局限性。近年来,随着人工智能技术的发展,尤其是大模型在自然语言处…

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…

如何更换Ubuntu系统的软件源

Ubuntu系统的软件源是决定你的系统从哪里下载软件包和更新的关键设置。有时&#xff0c;由于网络连接问题或软件源的更新&#xff0c;你可能需要更换软件源。以下是详细的步骤&#xff0c;教你如何在Ubuntu系统上更换软件源&#xff0c;并确保在更改之前进行备份。 步骤1&…

时间戳的转换-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;让我们一同探寻这个充…

Python操作PostGre的简单封装

文章目录 一、安装依赖二、配置文件三、实现类 一、安装依赖 pip install psycopg2 numpy 二、配置文件 utils.config.py import os############### 233 PostGre Configuration ############### POSTGRE_HOST "192.168.0.233" POSTGRE_PORT 5432 POSTGRE_USER …

《深入浅出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…

【Python进阶】argparse库基础用法全总结:高效脚本参数解析 | 参数类型使用代码

argparse库是 Python 标准库中用于解析命令行参数和选项的模块。它使得编写命令行界面&#xff08;CLI&#xff09;变得更加容易。&#xff0c;在深度学习中用到的比较多~~ 我们运行Python文件往往是直接输入命令 python test.py 但是如果我们想给Python文件脚本运行时候传入参…