Facebook-wda tidevice iOS自动化测试

2023-10-15 13:40

本文主要是介绍Facebook-wda tidevice iOS自动化测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天在用appium进行iOS自动化测试的时候发现其获取布局文件以及截图文件时效率非常低,于是就想到调研一下有没有其他方法跳过appium的接口。

 

奔跑吧!智能Monkey之Fastbot跨平台_ 字节跳动技术团队的博客-CSDN博客 这篇文章做了一个调研,结果并没有什么卵用:

 然后iOS自动化测试驱动工具探索_ios_字节跳动终端技术_InfoQ写作社区 文章中也提到字节实现了一个工具bdc,但是奈何他不开源。

facebook-wda

之后就发现了这个工具,是uiautomator2团队开发的工具(真的太牛了这个团队),之前安卓开发的时候为了绕过appium选择了uiautomator2,结果现在做ios端为了绕过appium又是选择了这个团队的工具。

github主页:GitHub - openatx/facebook-wda: Facebook WebDriverAgent Python Client Library (not official)

国人团队写的非常详细,我列几个常见的用法:

import wda# 连接设备
c = wda.Client('http://localhost:8100')
# 如果只有一个设备也可以简写为
c = wda.USBClient()
# 支持指定设备的udid,和WDA的端口号
c = wda.USBClient("539c5fffb18f2be0bf7f771d68f7c327fb68d2d9", port=8100)# 基础操作
c.source() # 获取XML
c.source(accessible=True) # default false, format JSON
# Press home button
c.home()
c.locked() # true of false
c.lock() # lock screen
c.unlock() # unlock
c.app_current() # 当前app,返回格式{"pid": 1281, "bundleId": "com.netease.cloudmusic"}
c.screenshot('screen.png') # Good
# convert to PIL.Image and then save as jpg
c.screenshot().save("screen.jpg") # Good
c.appium_settings() # 获取appium的配置# app连接
s = c.session("com.apple.Health", alert_action="accept")
c.session().app_activate("com.apple.Health") # same as app_launch
# terminate app
c.session().app_terminate("com.apple.Health")
# get app state
c.session().app_state("com.apple.Health")
# output {"value": 4, "sessionId": "xxxxxx"}
# different value means 1: die, 2: background, 4: running# 对app的一些操作,其实和上面对设备的操作差不多
s.home() # same as c.home(), use the same API
s.screenshot().save("s.png")
# Get width and height
print(s.window_size())
# Double touch
s.double_tap(200, 200)
s.swipe_left()
s.swipe_right()
s.swipe_up()
s.swipe_down()
# tap hold for 1 seconds
s.tap_hold(x, y, 1.0)
# press home, volumeUp, volumeDown
s.press("home") # fater then s.home()
s.press("volumeUp")
s.press("volumeDown")# 查找元素
# using id to find element and check if exists
s(id="URL").exists # return True or False
# using id or other query conditions
s(id='URL')
# using className
s(className="Button")
# using name
s(name='URL')
s(nameContains='UR')
s(nameMatches=".RL")
# using label
s(label="label")
s(labelContains="URL")
# using value
s(value="Enter")
s(valueContains="RL")
# using index, index must combined with at least on label,value, etc...
s(name='URL', index=1) # find the second element. index of founded elements, min is 0
# combines search conditions
# attributes bellow can combines
# :"className", "name", "label", "visible", "enabled"
s(className='Button', name='URL', visible=True, labelContains="Addr")
s(xpath='//Button[@name="URL"]')# 对元素操作
s(text='Dashboard').tap()
# Accessing attrbutes, you have to use get()
s(text='Dashboard').get().value
s(text='Dashboard').click_exists() # return immediately if not found
e.tap()
e.click() # alias of tap
e.clear_text()
e.set_text("Hello world")
e.tap_hold(2.0) # tapAndHold for 2.0s
# Set text
e.set_text("Hello WDA") # normal usage
e.set_text("Hello WDA\n") # send text with enter
e.set_text("\b\b\b") # delete 3 chars
# Swipe
s(className="Image").swipe("left")

其他的去主页看,写的真的很详细

但是不支持安装和卸载,可以用os.system调用下面介绍的tidevice的终端操作来实现

tidevice

顺便找到的一个能用来替代ideviceinstaller的阿里开发的一个类似于adb的iOS交互程序,用pip安装。

gitee地址:

tidevice: tidevice 是 iOS 自动化工具,可用于 iOS 应用的性能采集和 UI 自动化

github地址:GitHub - alibaba/taobao-iphone-device: tidevice can be used to communicate with iPhone device

pip3 install -U "tidevice[openssl]"   # Recommend
pip3 install -U tidevice

能够看一些手机的信息:

$ tidevice pair
# 配对设备$ tidevice unpair
# 取消配对设备$ tidevice list
List of apple devices attached
00008030-001A35E40212345678 codeskyblue的iPhoneSE$ tidevice list --json
[{"udid": "00008030-001A35E40212345678","name": "codeskyblue的iPhoneSE"}
]# 安装应用
$ tidevice install example.ipa# 指定设备安装
$ tidevice --udid $UDID install https://example.org/example.ipa# 卸载应用
$ tidevice uninstall com.example.demo# 启动应用
$ tidevice launch com.example.demo# 停止应用
$ tidevice kill com.example.demo# 查看已安装应用
$ tidevice applist# 查看运行中的应用
$ tidevice ps
$ tidevice ps --json output as json

同时还能够替代xcode运行WebDriveragent,也就是能支持Windows和Linux平台进行iOS测试,但是我没有弄成功就不写了,在github首页有写。

然后其实他还是支持python的,可以直接在python中调用API接口,看这个文章:

​​​​​​​阿里最新、最强开源iOS自动化测试神器 - 知乎

理论上应该有很多用facebook-wda进行开发的,毕竟没人想用appium,但是在网上找了好久都没有找到相关文章,只能自己踩坑然后写下来了。

这篇关于Facebook-wda tidevice iOS自动化测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/218087

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

如何使用Ansible实现CI/CD流水线的自动化

如何使用Ansible实现CI/CD流水线的自动化 持续集成(CI)和持续交付(CD)是现代软件开发过程中的核心实践,它们帮助团队更快地交付高质量的软件。Ansible,作为一个强大的自动化工具,可以在CI/CD流水线中发挥关键作用。本文将详细介绍如何使用Ansible实现CI/CD流水线的自动化,包括设计流水线的结构、配置管理、自动化测试、部署、以及集成Ansible与CI/CD工具(如Jen

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

BIRT 报表的自动化测试

来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-birttest/如何为 BIRT 报表编写自动化测试用例 BIRT 是一项很受欢迎的报表制作工具,但目前对其的测试还是以人工测试为主。本文介绍了如何对 BIRT 报表进行自动化测试,以及在实际项目中的一些测试实践,从而提高了测试的效率和准确性 -------