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

相关文章

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

Python实现自动化删除Word文档超链接的实用技巧

《Python实现自动化删除Word文档超链接的实用技巧》在日常工作中,我们经常需要处理各种Word文档,本文将深入探讨如何利用Python,特别是借助一个功能强大的库,高效移除Word文档中的超链接... 目录为什么需要移除Word文档超链接准备工作:环境搭建与库安装核心实现:使用python移除超链接的

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指