自动化测试用例结构分析

news/2025/9/27 10:10:37/文章来源:https://www.cnblogs.com/wlk27/p/19114789

启动appium

image

 获取包名和activity名

ASUS_I003DD:/ # monkey -p "io.appium.android.apis" -vvv 1
bash arg: -p
bash arg: io.appium.android.apis
bash arg: -vvv
bash arg: 1
args: [-p, io.appium.android.apis, -vvv, 1]
arg: "-p"
arg: "io.appium.android.apis"
arg: "-vvv"
arg: "1"
data="io.appium.android.apis"
:Monkey: seed=1758942553049 count=1
:AllowPackage: io.appium.android.apis
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
// Event percentages:
// 0: 15.0%
// 1: 10.0%
// 2: 2.0%
// 3: 15.0%
// 4: -0.0%
// 5: -0.0%
// 6: 25.0%
// 7: 15.0%
// 8: 2.0%
// 9: 2.0%
// 10: 1.0%
// 11: 13.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=io.appium.android.apis/.ApiDemos;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=io.appium.android.apis/.ApiDemos } in package io.appium.android.apis
Events injected: 1
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time=13ms (0ms mobile, 0ms wifi, 13ms not connected)
// Monkey finished
ASUS_I003DD:/ #

验证获取到的包名和activity名的正确性

ASUS_I003DD:/ # am start -S -n io.appium.android.apis/.ApiDemos
Stopping: io.appium.android.apis
Starting: Intent { cmp=io.appium.android.apis/.ApiDemos }
ASUS_I003DD:/ # am start -S -W -n io.appium.android.apis/.ApiDemos
Stopping: io.appium.android.apis
Starting: Intent { cmp=io.appium.android.apis/.ApiDemos }
Status: ok
Activity: io.appium.android.apis/.ApiDemos
ThisTime: 308
TotalTime: 308
WaitTime: 322
Complete
ASUS_I003DD:/ #

Capabilities设置截图:

image

 Capabilities的Json格式数据:

{
"platformName": "Android",
"appium:automationName": "uiautomator2",
"appium:deviceName": "127.0.0.1:21503",
"appium:appPackage": "io.appium.android.apis",
"appium:appActivity": ".ApiDemos"
}

自动化代码:

from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.webdriver.common.appiumby import AppiumBy# 配置Capability
caps = {# 配置平台名称"platformName": "Android",# 配置驱动名称"appium:automationName": "uiautomator2",# 配置被测设备的adb device名称"appium:deviceName": "127.0.0.1:21503",# 配置app的包名"appium:appPackage": "io.appium.android.apis",# 配置app的启动activity(也就是页面名称)"appium:appActivity": ".ApiDemos"
}# 初始化驱动
driver = webdriver.Remote(command_executor="http://127.0.0.1:4723",options=UiAutomator2Options().load_capabilities(caps)
)
# 录制的用例:
# 也就是用例的测试方法:
# 查找OS元素
el6 = driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="OS")
# 点击OS元素
el6.click()
# 查找Morse Code元素
el7 = driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="Morse Code")
# 点击Morse Code元素
el7.click()
# 查找文本输入框元素
el8 = driver.find_element(by=AppiumBy.ID, value="io.appium.android.apis:id/text")
# 文本框输入内容
el8.send_keys("0927")
# 返回上一个页面
driver.back()
# 返回上一个页面
driver.back()

优化一下自动化代码:

 1 # 定义一个测试类:
 2 from appium import webdriver
 3 from appium.options.android import UiAutomator2Options
 4 from appium.webdriver.common.appiumby import AppiumBy
 5 
 6 
 7 class TestDemo:
 8     def setup_method(self):
 9         """
10 
11         :return:
12         """
13         # 配置Capability
14         caps = {
15             # 配置平台名称
16             "platformName": "Android",
17             # 配置驱动名称
18             "appium:automationName": "uiautomator2",
19             # 配置被测设备的adb device名称
20             "appium:deviceName": "127.0.0.1:21503",
21             # 配置app的包名
22             "appium:appPackage": "io.appium.android.apis",
23             # 配置app的启动activity(也就是页面名称)
24             "appium:appActivity": ".ApiDemos"
25         }
26 
27         # 初始化驱动
28         self.driver = webdriver.Remote(
29             command_executor="http://127.0.0.1:4723",
30             options=UiAutomator2Options().load_capabilities(caps)
31         )
32 
33     def teardown_method(self):
34         """
35 
36         :return:
37         """
38 
39     def test_demo(self):
40         """
41 
42         :return:
43         """
44         # 录制的用例:
45         # 也就是用例的测试方法:
46         # 查找OS元素
47         el6 = self.driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="OS")
48         # 点击OS元素
49         el6.click()
50         # 查找Morse Code元素
51         el7 = self.driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="Morse Code")
52         # 点击Morse Code元素
53         el7.click()
54         # 查找文本输入框元素
55         el8 = self.driver.find_element(by=AppiumBy.ID, value="io.appium.android.apis:id/text")
56         # 文本框输入内容
57         el8.send_keys("0927")
58         # 返回上一个页面
59         self.driver.back()
60         # 返回上一个页面
61         self.driver.back()
62         # 添加断言
63         # 确认是否返回到了主页面,用主要的某个元素是否存在来判断
64         # 查找文本为Access'ibility的元素
65         result = self.driver.find_element(by=AppiumBy.XPATH, value="//*[@resource-id='android:id/text1'][1]")
66         # 获取该的文本
67         valid_value = "Access'ibility"
68         assert result.text == valid_value

 

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

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

相关文章

温州网站排名优化公司游戏 网站模板

目录 一、适合场景 二、开发过程说明 三、功能使用流程 四、代码 1、安装python依赖库 2、完整代码段 一、适合场景 无废话,CSV中有少量不合规数据需要手工处理可利用此方法,适合有点经验的程序员,可以不熟Python,思路还是要…

通过mcp-use client 调用mcp 服务方法

通过mcp-use client 调用mcp 服务方法mcp-use 提供了client,可以方便与mcp server 进行通信,是一个不错的方便测试的工具 参考代码app.pyimport asyncio from mcp_use import MCPClientasync def main():config = {&…

详细介绍:**Qwen3-Omni(多模态:文本/图像/音频/视频)**的安装与使用速通手册

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

建设银行网站适用浏览器和政网站建设

微信小程序自带tabbar&#xff0c;但无法实现中间按钮凸起样式和功能&#xff0c;因此按照设计重新自定义一个tabbar 1、创建tabbar文件&#xff0c;与pages同级创建一个文件夹&#xff0c;custom-tab-bar,里面按照设计图将底部tabbar样式编写 <view class"tab-bar&q…

扁平化风格网站模板自己公司产品网站的好处

文章目录 一.安装wsl二.下载docker desktop三.更换Docker镜像引用出处 一.安装wsl 在安装wsl之前&#xff0c;先在Windows中配置WSL环境,步骤很简单&#xff0c;按照以下文章进行 Windows10/11配置WSL(Ubuntu)环境 以管理员身份打开Windows PowerShell&#xff0c;执行以下命…

谷歌新款具身智能模型 Gemini Robotics 1.5 和 Gemini Robotics-ER 1.5

谷歌新款具身智能模型 Gemini Robotics 1.5 和 Gemini Robotics-ER 1.5 谷歌(Google)公司在 9 月 25 日推出了其最新一代的机器人具身智能模型 Gemini Robotics 1.5 和 Gemini Robotics-ER 1.5, 与之前推出的模型仅…

个人二级网站怎么做嵌入式软件开发岗位职责

页脚始终保持在页面底部的网页布局方法导语&#xff1a;用CSS创建一个高度自适应布局&#xff0c;如何保证页脚(footer)在内容不超过一屏的情况下始终保持在布局最下方是一个比较头疼的事。下面就由百分网小编为大家介绍一下页脚始终保持在页面底部的网页布局方法&#xff0c;希…

女装网站功能的建设郑州联通网站备案

QCon旧金山大会是由InfoQ举办的连续十年的最大的英语会议&#xff0c;它将在今年11月7-9日在旧金山湾区举行。\\在QCon大会涵盖了一系列深入的技术&#xff0c;架构师、资深开发者所关注的国际事件&#xff0c;聚焦创新领域和软件发展趋势&#xff0c;QCon大会每年在美国、中国…

网站多媒体加载卡顿?视频压缩 + 音频优化,加载速度提升 75% 的实操方法 - 实践

网站多媒体加载卡顿?视频压缩 + 音频优化,加载速度提升 75% 的实操方法 - 实践2025-09-27 09:49 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overfl…

全国做的最棒的网站域名的作用是什么

单例模式 指一个应用程序中&#xff0c;某个类的实例对象只有一个&#xff0c;你没有办法去new&#xff0c;因为构造器是被private修饰的&#xff0c;一般通过getInstance()的方法来获取它们的实例。 getInstance()的返回值是一个对象的引用&#xff0c;并不是一个新的实例&a…

完整教程:测试自动化教程:Parasoft如何流重定向与单元测试自动化

完整教程:测试自动化教程:Parasoft如何流重定向与单元测试自动化pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

用 Zig 实现英文数字验证码识别

一、背景介绍 验证码(CAPTCHA)是互联网应用中广泛使用的安全机制之一,主要用于区分真实用户与自动化程序。英文数字验证码识别可以通过 OCR 技术实现。本文将基于 Zig 语言 调用 Tesseract OCR,构建一个轻量级识别…

用 Crystal 实现英文数字验证码识别工具

一、项目简介 更多内容访问ttocr.com或联系1436423940 验证码识别是现代图像处理与 OCR(光学字符识别)技术的重要应用场景之一。本文将使用 Crystal 编程语言构建一个英文数字验证码识别工具,调用 Tesseract OCR 引…

实用指南:Java 面试 -Java基础

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

基于 Nim 的英文数字验证码识别工具实现

一、项目介绍 验证码识别是图像处理与字符识别的典型应用场景之一。本文将基于 Nim 编程语言实现一个简单的英文数字验证码识别工具,通过调用 Tesseract OCR 引擎,实现图像到字符的转换,探索 Nim 在图像处理场景下的…

怎么建立网站快捷方式企业融资渠道及技巧

https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/ra/ng/app转载于:https://www.cnblogs.com/zhangchengyuan/p/5623348.html

完整教程:数组(Java基础语法)

完整教程:数组(Java基础语法)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&qu…

网站收录怎么删班级网站建设方案

静态站点生成器大解析&#xff1a;找出哪一款最适合你 前言 本文将探讨六种不同的静态站点生成器和React框架&#xff0c;包括Gatsby&#xff0c;Next.js&#xff0c;Jekyll&#xff0c;Hugo&#xff0c;Hexo和Eleventy。这些工具各有特色&#xff0c;提供了丰富的功能和使用…

wp网站模板亲子游网站建设内容

CSS之盒子模型 margin: 用于控制元素与元素之间的距离&#xff1b;margin的最基本用途就是控制元素周围空间的间隔&#xff0c;从视觉角度上达到相互隔开的目的。padding: 用于控制内容与边框之间的距离&#xff1b;Border(边框): 围绕在内边距和内容外的边框。Content(内容): …

做网站都需要什么步骤网络管理网址

解题思路&#xff1a; 首先分别将pattern字符串转为字符数组p&#xff0c;将s字符串根据" "切割为字符串数组s1&#xff0c;判断两个数组的长度是否相等&#xff0c;如果不相等&#xff0c;则返回false。之后对两个数组的每个元素与哈希表做比对&#xff0c;哈希表的…