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

一、前置说明

我们把学习 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 timefrom 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.hqwc.cn/news/305270.html

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

相关文章

【JavaScript】垃圾回收与内存泄漏

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

Python 进阶(十八):配置文件(configparser 模块)

大家好,我是水滴~~ configparser模块是Python标准库中的一个模块,用于解析配置文件。它提供了一种简单而灵活的方式来读取、修改和写入INI格式的配置文件。本文将介绍该模块是如何操作配置文件的。 文章中包含大量的示例代码,希望能够帮助新…

Docker七 | 搭建Swarm集群

目录 创建Swarm集群 创建管理节点 增加工作节点 查看集群 部署服务 新建服务 查看服务 服务伸缩 增加服务 减少服务 删除服务 创建Swarm集群 创建管理节点 在192.168.117.131下执行docker swarm init命令的节点自动成为管理节点 [rootlocalhost ~]# docker swar…

同化的题解

时间限制: 1000ms 空间限制: 524288kB 题目描述 古人云:“近朱者赤近墨者黑”。这句话是很有道理的。这不鱼大大和一群苦命打工仔被安排进厂拧螺丝了。 进厂第一天,每个人拧螺丝的动力k都是不同且十分高涨的。但是当大家坐在一起后会聊天偷懒&#xf…

axios配置请求头content-type 和 get/post请求方式

axios配置请求头content-type https://blog.csdn.net/wojiushiwo945you/article/details/107653962 axios 是Ajax的一个插件,axios虽然是一个插件,但是我们不需要通过Vue.use(axios)来使用,下载完成后,只需在项目中引入即可。(一…

如何利用腾讯文档提升办公效率?

1. 实时协作功能:利用腾讯文档的实时协作功能,多人可以同时编辑和评论文档,大大提高团队工作效率。2. 云存储和同步:通过云存储和同步功能,方便地存储、访问和分享文档,不再受到时间和地点的限制。3. 版本控…

Google Ad帐号被封?这几个关键点看好

海外广告投放工作中,账号是非常重要的环节。与在Facebook上运行广告相比,运行Google Ads在代理选择方面通常没有那么严格,因为 Google 对 IP 使用并不那么严格。但是,这并不意味着您可以不加考虑地使用任何代理IP。在本文中&#…

Kubernetes (三) 集群升级

一. 集群升级 v1.23.15----v1.24.0 官网地址: https://v1-24.docs.kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/ kubectl里边内…

2023.12.28力扣每日一题——收集巧克力

2023.12.28 题目来源我的题解(参考力扣官方题解)方法一 枚举方法二 二次差分 题目来源 力扣每日一题;题序:2735 我的题解(参考力扣官方题解) 嗯……今天不会,就当一次搬运工吧。 方法一 枚举…

WEB 3D技术 three.js 设置环境贴图 高光贴图 场景设置 光照贴图

上文WEB 3D技术 three.js 基础网格材质演示几何体贴图 ao贴图效果我们简单构建了一个贴图和ao贴图的几何体材质 我们接下来 来看一下透明度贴图 我们还是官网搜索 MeshBasicMaterial 然后 是我们的 alphaMap 属性 这里 黑色为完全透明 白色 完全不透明 黑白之间还有灰色 这个灰…

基于SSM实现的电动汽车充电网点管理系统

一、系统架构 前端:jsp | jquery | bootstrap | css 后端:spring | springmvc | jdbc 环境:jdk1.8 | mysql 二、代码及数据库 三、功能介绍 01. web端-首页 02. web端-登录 03. web端-注册 04. web端-我要充电 05. web端-个人中心-消…

thinkphp6.0升级到8.0

目录 一:升级过程 二:报错处理 最近写的项目需要使用thinkphp8.0,之前的老项目需要从php6.0升级到8.0,特此记录下升级过程。 一:升级过程 查看版本: php think version,我目前的版本是6.1.4 生成thin…