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

news2024/9/28 17:34:54

一、前置说明

我们把学习 Appium 的第一个脚本称为 appium_helloworld,它用于展示 Appium 的基本用法,验证配置和环境是否正确。

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/1333922.html

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

相关文章

分类预测 | Matlab实现MTF-CNN-Mutilhead-Attention基于马尔可夫转移场-卷积神经网络融合多头注意力多特征数据分类预测

分类预测 | Matlab实现MTF-CNN-Mutilhead-Attention基于马尔可夫转移场-卷积神经网络融合多头注意力多特征数据分类预测 目录 分类预测 | Matlab实现MTF-CNN-Mutilhead-Attention基于马尔可夫转移场-卷积神经网络融合多头注意力多特征数据分类预测分类效果基本描述程序设计参考…

Python的基本数据类型和数据类型的转换

TOC 数据类型 类型查看 type 可以使用type内置函数查看变量所指的对象类型 a1 b1.0 c"1" d1, e[1] f{1:1} g{1}print(type(a)) print(type(b)) print(type(c)) print(type(d)) print(type(e)) print(type(f)) print(type(g))isinstance **如字面意思,isinstance()…

Flask+Mysql项目docker-compose部署(Pythondocker-compose详细步骤)

一、前言 环境: Linux、docker、docker-compose、python(Flask)、Mysql 简介: 简单使用Flask框架写的查询Mysql数据接口,使用docker部署,shell脚本启动 优势: 采用docker方式部署更加便于维护,更加简单快…

多维时序 | MATLAB实CNN-Mutilhead-Attention卷积神经网络融合多头注意力机制多变量时间序列预测

多维时序 | MATLAB实CNN-Mutilhead-Attention卷积神经网络融合多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实CNN-Mutilhead-Attention卷积神经网络融合多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | …

CUMT--Java复习--文件及IO流

目录 一、文件 1、文件系统和路径 2、File类 3、FilenameFilter接口 二、IO流 1、流的分类 2、流的体系结构 三、字节流 1、InputStream 2、OutputStream 四、字符流 1、Reader 2、Writer 五、过滤流和转换流 1、过滤流 2、转换流 六、序列化 1、对象序列化…

继承易错总结

1.继承会将所有的成员继承下来,但是继承方式限定的是继承下来成员的可见类型(如果是private继承,那么他不论哪里都是不可见的;如果是protected继承在类中是可见的,在类外是不可见的;如果是public继承,在任何…

[机器人-2]:开源MIT Min cheetah机械狗设计(二):机械结构设计

目录 1、四肢朝向的选择 2、电机布局形式的选择 3、电机的选型及测试(非常重要) 4、结构优化 5、尺寸效应 6、其他 1、四肢朝向的选择 机械狗的结构设计,第一个摆在我们面前的就说四肢的朝向问题,如下图,我们是…

白龙地铁消费项目(地铁消费系统,包括用户端、管理端)

大一学的C#可视化项目文件,所有功能均可使用。可以直接下载 下方是演示照片

Vue 3 Composition API:让组件开发更高效、灵活(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

修改第三方npm包

文章目录 一、前言二、补丁方案2.1、patch-package2.2、pnpm patch 三、换日方案四、总结五、最后 一、前言 在开发过程中,发现某个npm包有Bug,应该怎么办?可以试试下面这2种方案: 代码量少,可以直接修改npm包代码的&…

【计算机四级(网络工程师)笔记】操作系统运行机制

目录 一、中央处理器(CPU) 1.1CPU的状态 1.2指令分类 二、寄存器 2.1寄存器分类 2.2程序状态字(PSW) 三、系统调用 3.1系统调用与一般过程调用的区别 3.2系统调用的分类 四、中断与异常 4.1中断 4.2异常 🌈嗨&#xff…

【LeetCode】每日一题 2023_12_25 不浪费原料的汉堡制作方案(数学,解二元一次方程)

文章目录 刷题前唠嗑题目:不浪费原料的汉堡制作方案题目描述代码与解题思路 结语 刷题前唠嗑 LeetCode?启动!!! 题目:不浪费原料的汉堡制作方案 题目链接:1276. 不浪费原料的汉堡制作方案 题…

详解—数据结构—<常用排序>基本实现和代码分析

目录 一.排序的概念及其运用 1.1排序的概念 1.2排序运用​编辑 1.3 常见的排序算法​编辑 二.常见排序算法的实现 2.1 插入排序 2.1.1基本思想: 2.1.2直接插入排序: 2.1.3 希尔排序( 缩小增量排序 ) 2.2 选择排序 2.2.1基本思想: …

大模型工具:LangChain 原理与实战案例

LangChain 是什么? LangChain是一个用于开发由语言模型驱动的应用程序的框架。它使得可以构建以下类型的应用程序: 数据感知:将语言模型与其他数据源连接起来 智能:允许语言模型与其环境进行交互 LangChain的主要价值在于&…

【JavaSE】Java进阶知识一(泛型详解,包括泛型方法,协变,逆变,擦除机制)

目录 泛型 1. 什么是泛型 2.泛型方法 3.通配符上界(泛型的协变) 4.通配符下界(泛型的逆变) 5.泛型的编译(擦除机制) 泛型 泛型:就是让一个类能适用于多个类型,就是在封装数据结…

前端---vscode 的基本使用

1. vscode 的基本介绍 全拼是 Visual Studio Code (简称 VS Code) 是由微软研发的一款免费、开源的跨平台代码编辑器,目前是前端(网页)开发使用最多的一款软件开发工具。 2. vscode 的安装 下载网址: Download Visual Studio Code - Mac, Linux, Windows选择对应…

PyQt5和Qt designer的详细安装教程

Qt designer界面和所有组件功能的详细介绍参考:https://blog.csdn.net/qq_43811536/article/details/135186862?spm1001.2014.3001.5501 目录 0. 写在前面1. Anaconda创建虚拟环境2. 安装PyQt5和Qt designer3. 测试安装成功 0. 写在前面 Qt Designer是Qt提供的一种…

Tiny Object Detection

文章目录 RFLA: Gaussian Receptive Field based Label Assignment for Tiny Object Detection(ECCV2022)Dynamic Coarse-to-Fine Learning for Oriented Tiny Object Detection(CVPR2023)TOD-CMLNN(2023) …

RK3568平台开发系列讲解(Linux系统篇)Linux 热拔插机制 mdev的使能

🚀返回专栏总目录 文章目录 一、什么是热插拔二、热插拔的机制三、mdev的开启沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 Linux 热拔插。 一、什么是热插拔 热插拔是指在设备运行的情况下,能够安全地插入或拔出硬件设备,而无需关闭或重启系统。这意…

关于Nacos各日志以及解决Nacos中疯狂输出日志的问题

目录 前言1. 各日志内容2. 日志解析2.1 服务端日志2.2 客户端日志 前言 越来越发觉硬盘不够用,发现是运行了2年的Nacos中存了很多log日志,具体如下: 于是得了解下各个日志中的作用,防止不必要的输出占用硬盘空间! …