
iOS UI 自动化 Appium
文章平均质量分 53
Jasper张
2008年毕业,专业是计算机科学与技术,
2009年做大型机汇编语言开发,
2010年开始做手机系统测试,
2013年开始做互联网,app、web、服务端,功能测试、非功能测试、自动化测试,性能测试,搭建测试框架,掌握python、js,
2016年开始做测试开发,管理、技术双修,
至今奋战在一线的测试开发工程师。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用openpyxl时的一些注意点
使用openpyxl时的一些注意点原创 2025-04-15 20:23:43 · 437 阅读 · 0 评论 -
书接上回:openpyxl日常使用
在UI自动化的专项测试中,需要记录业务流程中每个节点的耗时情况,根据起始时间点,例如,点击首页中设备时开始算起,每个节点:app唤醒指令是否发送成功、设备是否唤醒成功、查看P2P连接结果、查看设备play state状态、查看设备在退出开流后是否休眠 等 的耗时。原创 2025-04-15 19:43:37 · 372 阅读 · 0 评论 -
JSON 与 Python 字典的区别:开发者必须掌握的基础知识
JSON(JavaScript Object Notation)和 Python 的字典格式非常相似,但它们并不完全相同。原创 2025-01-20 10:16:44 · 250 阅读 · 0 评论 -
Appium 检查安装的插件
在启动 Appium Server 时,检查输出日志。这会列出所有已安装的插件及其状态(启用或禁用)。6. Appium Server 确认插件加载。1. 查看已安装插件列表。2. 检查单个插件的详情。3. 启用和禁用插件。原创 2025-01-19 09:38:52 · 397 阅读 · 0 评论 -
Appium 检查安装的驱动
Appium 检查安装的驱动原创 2025-01-18 11:11:51 · 649 阅读 · 0 评论 -
pytest 测试方法互相调用的正确姿势
在 pytest 中,测试方法之间的调用应该尽量避免,因为 pytest 旨在以独立、隔离的方式执行测试。测试方法的目的应该是验证单一功能,而不是依赖其他测试的执行结果。测试方法之间的直接调用违背了这一原则。然而,在某些情况下,可能会有需要在一个测试方法中调用另一个测试方法的情况。通常,推荐的做法是将公共逻辑提取到 fixture 中,然后在需要的测试方法中使用这些 fixture,而不是直接调用其他测试方法。原创 2025-01-17 10:22:59 · 410 阅读 · 0 评论 -
appium安装警告:WARN AppiumDoctor ✖ android could NOT be found in /Users/testmanzhang/Library/Android/sdk
WARN AppiumDoctor ✖ android could NOT be found in /Users/testmanzhang/Library/Android/sdk原创 2025-01-16 10:21:44 · 422 阅读 · 0 评论 -
跨平台实践:python中如何检查当前操作系统
之前写的Android UI 自动化脚本及专项测试代码是在Windows上开发的,现在换mac了,有些地方需要根据不同系统进行兼容适配原创 2025-01-15 10:10:36 · 638 阅读 · 0 评论 -
深度解析 pytest 参数化与 --count 执行顺序的奥秘
pytest 参数化与 --count 执行顺序的奥秘原创 2025-01-14 10:15:30 · 933 阅读 · 0 评论 -
通过自定义测试组合实现自定义测试顺序
通过自定义测试组合实现自定义测试顺序原创 2025-01-13 10:22:22 · 177 阅读 · 0 评论 -
Shell 脚本与 Pytest 结合:交替运行 Pytest 的两个测试方法
有这样一个情况,在test_user_center.py文件中有两个测试方法,test_login和test_logout,如何交替执行这两个测试方法?原创 2025-01-10 11:13:31 · 573 阅读 · 0 评论 -
Appium:Android 和 iOS 的capabilities是否需要前缀?
在较新的 Appium 和 W3C WebDriver 标准中,能力名称需要加上命名空间前缀(如 appium:)。这是因为 W3C 标准化了能力的结构,要求所有自定义能力都必须使用前缀来区分。Appium 使用 appium: 前缀来标记其专用的能力。原创 2025-01-09 10:03:49 · 592 阅读 · 0 评论 -
Appium版本升级,需要注意哪些点:使用UiAutomator2Options传递capabilities
mac上安装的是较新的Appium版本,在跑之前写的Android UI 自动化代码时报错:AttributeError: 'dict' object has no attribute 'to_capabilities'。原创 2025-01-08 10:23:26 · 683 阅读 · 0 评论 -
如何从串 ‘ 中国 +86‘ 中,获取到‘中国’:strip()、split()及正则表达式的使用
如果字符串 ' 中国 +86' 中 "中国" 前面有空格,且我们需要从中提取出 "中国",可以使用以下方法处理:原创 2025-01-07 10:12:26 · 530 阅读 · 0 评论 -
深入理解 pytest_runtest_makereport:如何在 pytest 中自定义测试报告
pytest_runtest_makereport 是 pytest 系统中的一个钩子函数,它允许我们在测试执行时获取测试的报告信息。通过这个钩子,我们可以在测试运行时(无论是成功、失败还是跳过)对测试结果进行进一步处理,比如记录日志、添加自定义信息、生成报告等。原创 2025-01-06 19:26:13 · 1016 阅读 · 0 评论 -
创建代码仓库时 创建合并请求模板 选项是否需要勾选?
在创建代码仓库时,"创建合并请求模板"(Create a Pull Request Template) 选项并不是强制性的,但是建议勾选,特别是当你的团队或项目涉及多人协作时。原创 2025-01-03 10:11:17 · 294 阅读 · 0 评论 -
在阿里云代码仓库的 README.md 中正确嵌入图片的技巧
在将代码上传到阿里云代码仓库之后,需要写README.md,它是一个纯文本,不能将图片或者截图直接放在README.md中,怎么解决这个问题呢?原创 2025-01-02 11:18:26 · 666 阅读 · 0 评论 -
在pytest钩子函数中判断Android和iOS设备(方法二)
driver.capabilities.get('platformName'):获取设备的 platformName,这是 Appium 创建的 WebDriver 对象的一个标准字段。原创 2025-01-01 08:32:25 · 495 阅读 · 0 评论 -
在pytest钩子函数中判断Android和iOS设备(方法一)
在这个钩子函数中我添加了,截图和重启app的指令,这就需要在执行前知道是Android手机还是iOS手机,这样才能创建driver,为了区分不同平台,可以这样判断原创 2024-12-31 10:21:15 · 954 阅读 · 0 评论 -
神奇的1秒等待:解决 Android 和 iOS UI 自动化中的点击无效问题
在进行 Android 和 iOS UI 自动化测试时,我遇到了一个令人头疼的问题:当使用滚动查找元素(如 UiScrollable)后,元素已经找到,但是点击操作无效。具体表现为:虽然调用了 click() 方法,但点击效果并未生效。原创 2024-12-27 15:43:09 · 582 阅读 · 0 评论 -
zshrc中的(eval) 前缀是什么?
eval:是一个 shell 命令,它会把字符串当作命令执行。例如,eval "echo Hello" 会打印 Hello。原创 2024-12-25 10:20:22 · 385 阅读 · 0 评论 -
解决(eval):39: command not found: compdef
我遇到的错误 (eval):39: command not found: compdef 表明某个插件或功能需要 compdef 命令,但没有正确加载。在 Oh My Zsh 中,compdef 通常由 compinit 命令提供支持。如果没有加载 compinit,会导致 compdef 找不到。原创 2024-12-24 10:47:22 · 375 阅读 · 0 评论 -
使用pytest执行多条用例时注意点
在命令行中指定多条测试用例时,如果某个测试用例包含多组参数化数据,pytest 会先完成该用例的所有数据组合的执行后,再开始执行下一条用例。例如,对于前面提到的 test_login 和 test_logout 测试用例,假设 test_login 包含 4 组参数化数据,pytest 会依次执行完这 4 组数据的测试后,才会继续执行 test_logout。原创 2024-12-20 11:52:17 · 276 阅读 · 0 评论 -
pytest parametrize 的冷知识:普通方法也能用!但别忘了这些限制
@pytest.mark.parametrize 可以装饰普通方法,但有以下注意事项原创 2024-12-19 10:31:59 · 285 阅读 · 0 评论 -
pytest 小技巧:非测试方法如何使用 pytest fixture
普通方法(非以 test_ 开头的方法)也可以使用 pytest 的 fixture,但有一些特别的注意事项。原创 2024-12-18 10:16:01 · 633 阅读 · 0 评论 -
@pytest.fixture() 跟 @pytest.fixture有区别吗?
1、在没有参数时,@pytest.fixture 和 @pytest.fixture() 是等价的,使用括号并不会改变装饰器的功能;@pytest.fixture 是 @pytest.fixture() 的简写形式,它直接调用 fixture 装饰器的默认参数;没有参数时,为了代码简洁和遵循惯例,通常推荐使用 @pytest.fixture,不需要加括号,更简洁。2、当需要设置参数(如 scope, autouse 等)时,必须使用 @pytest.fixture()。原创 2024-12-17 10:11:09 · 569 阅读 · 0 评论 -
千万不要这样指定!pytest中正确选择多条用例的方法
在做iOS UI 自动化的时候,如何选中两条用例来执行,例如,有登录和登出两条用例,那么如何使用pytest命令行来执行它们呢?原创 2024-12-16 11:54:47 · 305 阅读 · 0 评论 -
深入解析 Pytest 中的 conftest.py:测试配置与复用的利器
conftest.py 是 Pytest 中一个用于集中管理共享配置的工具,可以极大地提高测试代码的可维护性和复用性。对于复杂的测试框架来说,合理使用 conftest.py 是非常关键的一部分。原创 2024-12-13 10:14:13 · 1704 阅读 · 0 评论 -
全面解析 pytest fixture:使用方法、实战技巧与最佳实践
在 pytest 中,fixture 是一种机制,用来提供测试函数所需的资源或上下文。它可以用于设置测试环境、准备数据、连接数据库、创建对象等。Fixture 的核心思想是 "安排和清理",它会在测试运行之前提供资源,并在测试完成后清理资源。原创 2024-12-11 13:52:24 · 1227 阅读 · 0 评论 -
深挖 Python 中的 False 值:哪些对象会被视为 False?
在 Python 中,一些对象在布尔上下文中会被视为 False。这些对象可以分为几类。原创 2024-12-10 10:10:01 · 570 阅读 · 0 评论 -
python 中如何转义\n
在 Python 中,如果想要在字符串中表示一个换行符 \n 本身(而不是让它表示换行),需要进行转义。有两种方法可供使用。原创 2024-12-09 10:09:06 · 299 阅读 · 0 评论 -
强制卸载挂载目录diskutil unmount force
尝试卸载(umount)路径 /Users/testmanzhang/ios_sandbox/iPhoneX 时,系统返回了 "Resource busy" 错误,这意味着该路径正在被某些进程或资源占用,无法卸载。原创 2024-12-06 10:18:01 · 258 阅读 · 0 评论 -
Python subprocess.run 使用注意事项,避免出现list index out of range
在使用result = subprocess.run(get_state_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)没有获取到结果时,出现list index out of range原创 2024-12-05 12:01:17 · 744 阅读 · 0 评论 -
pytest -v --collect-only, 显示所有被发现的测试
执行pytest -v --collect-only,它就会列出当前目录下所有被发现的测试原创 2024-12-04 10:52:27 · 606 阅读 · 0 评论 -
pytest --capture=fd,fd是什么,详解文件描述符级别的输出
“文件描述符级别的输出”指的是操作系统中对文件的访问和管理的一种方式。每个进程在操作系统中都有与其交互的“文件描述符”(file descriptor,简称 FD)。这些文件描述符用于标识进程正在读取或写入的文件、设备或其他资源。原创 2024-12-03 11:00:38 · 183 阅读 · 0 评论 -
Pytest --capture 参数详解:如何控制测试执行过程中的输出行为
--capture 选项用于控制测试用例执行过程中标准输出(stdout)和标准错误输出(stderr)的捕获行为。原创 2024-12-02 11:42:07 · 1016 阅读 · 0 评论 -
JSON vs 表单格式:两种常见请求格式的区别与应用
JSON vs 表单格式:两种常见请求格式的区别与应用原创 2024-11-29 10:38:26 · 916 阅读 · 0 评论 -
什么是RESTful接口,今天彻底搞懂它
RESTful 接口是基于 REST(Representational State Transfer) 架构风格设计的 Web API 接口。它使用 HTTP 协议中的方法(如 GET、POST、PUT、DELETE)来操作资源,并遵循一系列约定,使得接口具有一致性、简洁性和可扩展性。原创 2024-11-27 19:22:28 · 7390 阅读 · 0 评论 -
如何通过Pytest Hook捕获执行结果与错误详情
之前已经在日志文件中记录了当前测试的执行次数以及关键节点的相关日志,但尚未包含测试结果的状态信息(如 PASSED、FAILED 或 SKIPPED)。虽然这些测试状态在 pytest 的 summary 中已经体现,但需要通过执行日志和 pytest summary 二者的结合来分析调试。为使执行日志更完整、更直观,我将测试结果的状态也一并记录到日志文件中,以便更高效地进行问题定位和分析。原创 2024-11-27 10:11:59 · 358 阅读 · 0 评论 -
如何还原 HTTP 请求日志中的 URL 编码参数?详解 %40 到 @
%40 是 URL 编码后的 @ 符号,说明请求体中的参数被编码后记录下来了。这是因为在 HTTP 请求中,某些特殊字符(如 @, &, =)会被 URL 编码以确保安全性。但是看着不直观,如果有其他特殊符号可能就不知道是什么意思了。原创 2024-11-25 11:01:09 · 936 阅读 · 0 评论