Python编写第一个APP自动化脚本,将脚本跑起来

news2025/3/6 23:38:23

一、前置说明

Python 使用 Appium 做 APP自动化的基本流程(Android平台):

  1. 启动 Appium Server
  2. adb 连接设备(真机或模拟器)
  3. uiautomatorviewer 连接设备,定位元素信息
  4. 使用appium-python-client库,编写客户端脚本
  5. 运行客户端脚本,启动app并操作相应的元素
  6. 结果断言,判断是否执行成功
  7. 退出程序

二、操作步骤

1. 启动 Appium Server

终端命令行中,执行命令:appium ,启动Appium Server:

看到上图中的内容,表示appium server已启动成功。如果启动失败,请参考 Appium Server 启动失败常见原因及解决办法。

2. 启动Android模拟器,并使用 adb 连接

启动夜神模拟器,用于定位元素;启动MuMu模拟器,用于执行脚本:

为什么要启动两个模拟器,请参考:Android模拟器的安装和adb连接

连接夜神模拟器(启动之后,会自动连接):adb connect 127.0.0.1:62001
连接MuMu模拟器:adb connect 127.0.0.1:7555

3. 下载安装测试 apk

下载测试 apk 安装包:

链接:https://pan.baidu.com/s/1Wk9Wn5n9EDVlgFSTixYWrA?pwd=6ng5
提取码:6ng5

拖拽至模拟器桌面即可安装:

5. 启动 uiautomatorviewer ,获取元素的定位信息

请参考 使用 uiautomatorviewer 获取元素的定位信息

5. 编写 python 自动化脚本

atme/demos/demo_appium_helloworld.py

import time

from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.webdriver.common.appiumby import AppiumBy

# Appium 服务器的地址
appium_server_url = 'http://localhost:4723'

# 配置设备参数, 告知 Appium Server 设备的运行平台、使用什么自动化引擎、操作哪台设备、操作哪个应用等
capabilities = {
    "platformName": "Android",  # 设备平台为 Android
    "automationName": "uiautomator2",  # 使用 UiAutomator2 作为自动化引擎
    "deviceName": "127.0.0.1:7555",  # 设备名称或连接地址(MuMu模拟器的udid)
    "udid": "127.0.0.1:7555",  # 设备的唯一标识符(MuMu模拟器的udid)
    "appPackage": "io.appium.android.apis",  # 待测试应用的包名
    "appActivity": ".ApiDemos",  # 待测试应用的启动活动页
}

# 创建 UiAutomator2Options 对象并加载设备配置参数
options = UiAutomator2Options().load_capabilities(capabilities)

# 创建 Appium WebDriver 对象,携带参数信息,连接至 Appium 服务器
driver = webdriver.Remote(appium_server_url, options=options)

# 查找元素,查找方式为 XPATH,目标元素的属性值为 //*[@text="Accessibility"]
element = driver.find_element(by=AppiumBy.XPATH, value='//*[@text="Accessibility"]')

# 点击查找到的元素
element.click()

# 等待 2 秒,用于等待跳转之后的页面元素加载
time.sleep(2)

# 判断跳转之后,断言目标元素是否出现
expected_element = driver.find_element(by=AppiumBy.XPATH, value='//*[@text="Accessibility Node Provider"]')
assert expected_element.text == "Accessibility Node Provider"
print('=========断言成功===========')

# 等待 3 秒,用于观察页面变化
time.sleep(3)

# 关闭并退出 WebDriver
driver.quit()

6. 运行自动化脚本

点击右键,点击 Run demo_appium_helloworld.py,运行脚本:

7. 查看运行结果

控制台输出结果:

模拟器成功点击元素,并跳转至相应页面:

欢迎技术交流:

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

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

相关文章

基于ssm+jsp二手车估值与销售网络平台源码和论文

随着信息化时代的到来,管理系统都趋向于智能化、系统化,二手车估值与销售网络平台也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化&#…

振动试验的工装夹具(GB/T 2423.43-2008)

但当试件体积较大,而且形状复杂时,这种固定方法显然很困难,这时需要制作夹具,让试件安装在夹具上然后把夹具牢固地固定在振动台面上,因此实际上夹具是试件与振动台面连接的过渡体,其功能是将振动台的振动和…

深度学习美化图片,绝对可行,美化效果挺好 DPED

一、背景 要美化生成的图片的效果,找到一个 效果如下: 二、步骤 1、python3.6环境,TensorFlow 2.0.0 2、下载代码:https://github.com/aiff22/DPEDx 3、将要增强的照片放在以下目录中,没有就新建: dpe…

亚马逊圣诞关键词怎么选?圣诞节促销活动有哪些?——站斧浏览器

亚马逊圣诞关键词怎么选 以下是在亚马逊圣诞期间利用长尾关键词的一些建议: 圣诞主题关键词:随着节日的临近,与圣诞相关的关键词搜索热度将急剧上升。在产品标题、描述、关键词等位置使用与圣诞节相关的关键词,比如“圣诞礼物”…

强烈推荐!好玩又好用的开源工具

今天来分享 7 个好玩又好用的开源工具,还可以学习项目代码! PDF Guru:通用型 PDF 文件处理工具AiEditor:面向 AI 的下一代富文本编辑器pear-rec:实用工具集,包括截图、录屏、录音、录像等Pot:划…

2024年软件测试工程师如何从功能测试转成自动化测试?

前言 接触了太多测试同行&#xff0c;由于多数同行之前一直做手工测试&#xff0c;现在很迫切希望做[<u>自动化测试</u>](javascript:;)&#xff0c;其中不乏工作5年以上的同行。 从事软件自动化测试已经近十年&#xff0c;接触过底层服务端、API 、Web、APP、H5…

鸿蒙开发之hdc命令行

一、简介 hdc&#xff08;HarmonyOS Device Connector&#xff09;是HarmonyOS为开发人员提供的用于调试的命令行工具&#xff0c;通过该工具可以在windows/linux/mac系统上与真实设备进行交互。 二、环境准备 hdc工具通过HarmonyOS SDK获取&#xff0c;存放于SDK的toolchai…

Ubuntu 常用命令之 ping 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 ping命令是一种网络诊断工具&#xff0c;用于测试主机之间网络的连通性。它发送ICMP Echo Request消息到指定的网络主机&#xff0c;并等待接收ICMP Echo Reply。通过这种方式&#xff0c;我们可以知道两台主机之间的网络是否畅通…

【String str = new String(“hollis“) 创建了几个对象?】

✅典型解析 创建的对象数应该是1个或者2个。 首先要清楚什么是对象? Java是一种面向对象的语言&#xff0c;而Java对象在JVM中的存储也是有一定的结构的&#xff0c;在HotSpot虚机中&#xff0c;存储的形式就是oop-klass model&#xff0c;即ava对象模型。我们在Java代码中&am…

【计算机系统结构实验】实验2 流水线中的冲突实验

2.1 实验目的 加深对计算机流水线基本概念的理解&#xff1b; 理解MIPS结构如何用5段流水线来实现&#xff0c;理解各段的功能和基本操作&#xff1b; 加深对结构冲突/数据冲突/控制冲突的理解&#xff1b; 进一步理解解决数据冲突的方法&#xff0c;掌握如何应用定向技术来…

计算机软考有哪些科目?都考什么内容?

一、软考初级科目 1、程序员 考核内容&#xff1a;计算机相关基础知识&#xff1b;基本数据结构和常用算法&#xff1b;C程序设计语言以及C、JAVA中的一种程序设计语言。 岗位描述&#xff1a;从事软件开发和调试工作的初级技术人员。 2、网络管理员 考核内容&#xff1a;…

MySQL的hash索引

MySQL有BTree 索引及Hash索引等索引类型&#xff0c;BTree索引类型是MySQL采用最多的索引类型。Hash索引使用场景比较有限&#xff0c;文章将从Hash索引的底层结构出发&#xff0c;来分析Hash索引的利与弊。 1 hash数据结构 hash数据结构由键、哈希函数及哈希表组成。 键&am…

Hive文件存储与压缩

压缩和存储 1、 Hadoop压缩配置 1) MR支持的压缩编码 压缩格式工具算法文件扩展名是否可切分DEFAULT无DEFAULT.deflate否GzipgzipDEFAULT.gz否bzip2bzip2bzip2.bz2是LZOlzopLZO.lzo否LZ4无LZ4.lz4否Snappy无Snappy.snappy否 为了支持多种压缩/解压缩算法&#xff0c;Hadoop…

acwing linux 第七讲 环境变量、管道、常用命令、附录

文章目录 管道 概念 要点 举例 环境变量 查看 修改 常用环境变量 常用命令 系统状况 文件权限 文件检索 查看文件内容 用户相关 其他工具 安装软件 附录 Linux权限 本节课讲解的是管道&#xff0c;环境变量&#xff0c;以及常用命令 管道 概念 管道类似文…

MD5的实现与“破解”

MD5的实现与“破解” 文章目录 MD5的实现与“破解”一、 概述二、 MD5简单介绍三、 MD5的实现四、 MD5的“破解”五、MD5的“破解”方法1. 暴力破解&#xff1a;穷举法&字典法2. 时间和空间的折中&#xff1a;哈希链表法&彩虹表法2.1. 哈希链表法的过程2.2. 哈希链表可…

C# WPF上位机开发(多线程中锁的使用)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 多线程编程一般都会涉及到锁的时候&#xff0c;很多人可能觉得很意外&#xff0c;为什么会需要这么一个锁。本质上&#xff0c;这主要还是因为多线…

深度学习中的损失函数

1 损失函数概述 大多数深度学习算法都会涉及某种形式的优化&#xff0c;所谓优化指的是改变以最小化或最大化某个函数 的任务&#xff0c;我们通常以最小化指代大多数最优化问题。 在机器学习中&#xff0c;损失函数是代价函数的一部分&#xff0c;而代价函数是目标函数的一种…

python脚本传参

sys.argvargparse 第一种&#xff1a;argparse 简单使用&#xff1a; import argparse # 创建一个参数解析实例 parser argparse.ArgumentParser(descriptionParameters) # 添加参数解析 parser.add_argument(--training_epoch, typeint, default3000) parser.add_argument(…

Layui 下拉select多选实现

1. html <div id"mo_deptment"></div> 2.引用 <script src"~/layuiadmin/layui/xm-select.js"></script>3.设置全局变量存储控件 var mo_deptmentSelect; 4.layui.use 中初始化 4.1 列表数据 var mo_deptmentdata [ …

Ubuntu 常用命令之 mkfs 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 mkfs 是在 Linux 和其他 Unix-like 系统中用于创建文件系统的命令。在 Ubuntu 系统中&#xff0c;mkfs 命令也是用于创建文件系统的。mkfs 是一个包装器&#xff0c;它会根据用户指定的文件系统类型调用相应的程序。 mkfs 命令的…