项目实战之接口和UI的侧重点

TiDevice,Windows上运行IOS自动化 Tidevice是由阿里开发的,不依赖 Xcode 就可以启动 WebDriverAgent( WDA ),因此可以在Windows系统直接运行xctest。 阅读详情

在这里插入图片描述

如果之前做过iOS自动化的同学相信都知道,一直以来,iOS自动化的实现&执行都必须依赖 Mac 系统,其主要原因是因为需要通过xcodebuild 编译&安装WDA (WebDriverAgent)到 iOS 设备中,通过WDA实现对被测应用进行操作。导致想要做iOS自动化 就必须拥有 Mac 设备的现象。

作为一名测开新手,在学习完移动端自动化测试后,兴致满满要实践一番,无奈公司只配备了windows电脑,怎样进行iOS自动化测试成了一大难题,而今天给大家分享一款新面市不久的iOS自动化工具:tidevice,正好是弥补了这块空缺。

一、tidevice介绍

tidevice 是阿里内部小组前不久,刚开源的一款针对用来做iOS自动化测试用途的工具,可用于iOS应用的性能采集和UI自动化。不依赖Xcodebuild,可以运行在Mac,Linux,Windows 上,即使你没有Mac电脑,也能跑iOS自动化。

一句话概况:tidevice它是一款跨平台的自动化开源工具,不依赖 Xcode 就可以启动 WebDriverAgent( WDA ),这也就意味着以后在Windows 可以直接运行 iOS 自动化脚本了。

项目地址:

https://github.com/alibaba/taobao-iphone-device

二、tidevice能些什么?

从上述的介绍中,可以知道tidevice定位就是一款iOS自动化测试工具,主要用途有:

  • iOS UI自动化测试
  • 设备信息获取
  • 应用安装、卸载、启动、停止、查看应用信息、已安装应用列表
  • 启动 WebDriverAgent (不依赖 xcodebuild , 跨平台)
  • 性能数据采集
  • 设备截图、设备日志等

三、 tidevice自动化环境准备

1.安装tidevice(依赖Python3.6+)

pip3 install -U "tidevice[openssl]" (推荐)
pip3 install -U tidevice (缺少设备配对功能)

2.查看是否安装成功

tidevice -v

3.在设备上安装WebDriverAgent

除了上述两步,要完成 iOS 端的自动化,我们还需要做一些准备工作

3.1 . 下载WebDriverAgent,将 WebDriverAgent 安装到 iOS 设备上,通过它驱动手机进行一系列自动化操作,由于 Facebook WDA 很长时间没有更新了,这里建议直接使用 Appium WDA

https://github.com/appium/WebDriverAgent

3.2. 切换到WebDriverAgent目录下,执行./Scripts/bootstrap.sh

3.3. 依赖安装完成后,双击WebDriverAgent目录下的WebDriverAgent.xcodeproj在Xcode中打开

3.4. WebDriverAgent的Bundle Identifier更改为自己命名的Identifier

3.5. WebDriverAgentLib的Bundle Identifier更改为自己命名的Identifier

3.6. WebDriverAgentRunner的Bundle Identifier更改为自己命名的Identifier

3.7. 连接手机,点击Bulid

image

3.8. 提示Build Succeeded表示成功,点击Product–>Test
image

3.9. 提示Succeeded后打开手机-通用-设备管理-点击信任即可。

四、tidevice常用功能

准备好上述环境后,将 iPhone 设备连接到电脑上,就可以使用 tidevice 提供的功能了

  1. 查看已连接设备列表
tidevice list
# json数据显示
tidevice list --json

由于tidevice 支持的所有cmd命令 都是在 tidevice.main 中定义实现,可以直接与自己的工程代码集成在一起。

Python代码:

from tidevice import Usbmux
print(Usbmux().device_list())

利用tidevice info可以查看设备信息,比如:设备序列号、系统版本、CPU、本机号码、时间戳、蓝牙地址、MAC 地址等信息

2. 查看手机上安装的应用

tidevice applist

image

Python代码:

from tidevice import Device
Instruments = Device("udid").connect_instruments()
# 设备上全部App信息列表 包含 系统应用和插件,通过 Type 可以区分App
apps = instruments.app_list() 
# 只筛选用户安装的App列表
user_app_list = [app for app in apps if app["Type"] == "User"] 

3. 安装、卸载应用

tidevice 支持安装本地 ipa 包和远程包,另外,tidevice 可以使用「 --udid 」参数将应用安装到某一台设备中

# 安装本地应用
tidevice install test.ipa

# 根据udid参数,指定设备安装应用
tidevice --udid $UDID install https://xxx.org/mikezhou.ipa

# 卸载应用(通过包名)
# 比如:微信App包名为:com.tencent.xin 
tidevice uninstall com.tencent.xin 

Python代码:

from tidevice import Device
Device("udid").app_install(ipa_url_or_path)
  1. 获取设备信息
tidevice info

Python代码:

from tidevice import Device
# 内容会比cmd 全很多, 但是需要理解每个字段的含义
Device("udid").device_info()

查看设备电源信息

tidevice info --domain com.apple.mobile.battery --json

可以执行 ideviceinfo -h查看都有哪些domain。

  1. fps 数据采集
tidevice dumpsfps

四.执行自动化测试

在执行iOS自动化测试之前,首先要提前将 WDA 安装到 iOS设备中 并在设置中信任开发者,确保WDA可以正常启动,并且知道bundleId。

1、启动WDA

真机设备安装完 WDA 后,就可以脱离 Mac,使用 Windows 进行自动化操作了

tidevice -u(设备 udid)wdaproxy -B(wda 的 bundleId) --port 8100
# 只连接了一台手机,例如:
tidevice wdaproxy -B com.facebook.WebDriverAgent1.xctrunner --port 8100

当看到以下信息表示启动成功

image

此时可以访问http://127.0.0.1:8100/status

2.weditor安装查看元素工具

# weditor安装
pip3 install -U weditor
# weditor启动
控制台输入weditor或者python3 -m weditor

3.查看元素

  • Windows: cmd–>ipconfig–>获取本机ip,系统选择iOS,输入http://本机ip:8100,点击Connect
  • Mac电脑:系统选择iOS, 输入http://localhost:8100,点击Connect

[图片上传失败…(image-e2c3e8-1625463767310)]

接下来,就可以使用 Appium 或 facebook-wda 编写脚本并运行到 iOS 设备上了,首先,我们安装对应的依赖,比如安装facebook-wda依赖

pip3 install -U facebook-wda

接着,以酷狗App为例,编写自动化脚本并运行测试,代码如下:

# -*- coding:utf-8 -*-
import wda
import allure

d = wda.USBClient()

class TestDemo:
    def setup(self):
        d.session('com.kugou.kugou1002')

    def test_loginDemo(self):
        with allure.step('点击我的'):
            d(label='我的').click_exists(10)
        with allure.step('点击登录'):
            d.xpath('//*[@label="空列表"]/Other[1]/Button[1]/StaticText[3]').click_exists(10)
        with allure.step('点击其他登录方式'):
            d(label="其他登录方式").click_exists(10)
        with allure.step('输入账号'):
            d.xpath('//*[@label="帐号"]/following-sibling::*[1]').get(10).set_text('17622222333')
        with allure.step('输入密码'):
            d.xpath('//*[@label="密码"]/following-sibling::*[1]').get(10).set_text('000000')
        with allure.step('点击登录'):
            d.xpath('//*[@label="密码"]/parent::*/parent::*/following-sibling::*[2]').click_exists(10)
        assert d(label="请先勾选页面下方的“同意《用户协议》和《隐私政策》”").wait(10) != None

    def teardown(self):
        d.app_stop('com.kugou.kugou1002')

五. 最后

阿里开源的tidevice这款工具,占用内存小,且支持跨平台,使iOS自动化摆脱了Mac的限制,也给iOS自动化方案建设更多的可能性,但由于刚开源不久,可能还存在一些不稳定的因素,但这并阻止不了大家尝鲜的脚步。

最后: 可以关注公众号:伤心的辣条 ! 进去有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

在这里我向大家推荐一个自动化学习交流群。交流学习群号:914172719 里面会分享一些资深架构师录制的测试有关视频录像…

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

iOS自动化之tidevice 阅读详情

相关推荐

2022 亲测可行:Windows 实现 iOS 手机 USB 自动化测试:Mac 环境配置+ WebDriverAgent 编译+Windows tidevice 环境配置

查看几十篇相关文章,亲测可行的安装步骤。

lisalotus的博客 2468

iOS自动化测试工具-tidevice

tidevice是阿里开源的iOS自动化测试工具,能够提供截图、获取手机信息、ipa包的安装和卸载、根据bundleID启动和停止应用、获取指定应用性能数据、模拟xcode运行xctest等功能。

Vermouth_00的博客 7560

接口测试面试题

前言 今天想和大家聊的是面试题,面试题是关于接口测试的,希望大家喜欢,我这里还是不多说废话了,我们直接进入正题吧哈哈哈哈。 这些是接口面试题中比较常见的。 1、请结合你熟悉的项目,介绍一下你是怎么做测试的? 首先要自己熟悉项目,熟悉项目的需求、项目组织架构、项目研发接口等 2、功能 + 接口 + 自动化 + 性能 是怎么处理的? 第一步: 进行需求分析,需求评审,研发和测试对需求达成统一的理解 第二步:架构师会输出接口规范;     前后端开发根据接口进行开发     功能测试人.

qishuzdh的博客 6661

基于tidevice实现iOS app自动化使用详解

首先需要知道在iOS设备上是谁在执行发送过去的指令,它就是XCUITest,下面介绍它的由来和作用:XCTest和XCUITest是 iOS 开发中常用的两个测试框架,它们之间存在一定的区别和联系。XCTest:是苹果官方提供的测试框架,可以在 Objective-C 和 Swift 语言中使用。它提供了很多功能强大的测试工具,包括单元测试、性能测试、UI 测试等。使用 XCTest 可以帮助开发者快速编写和运行各种类型的测试用例,并得到详细的测试报告。

lIujunXHU的博客 7817

接口测试----前言,接口是怎么来的

接口测试—-前言,接口是怎么来的 接口测试—-中篇,通过django实现一个记事本接口 接口测试—-下篇,开始接口测试 接口测试—-工具篇,实现接口自动化概要: 本篇将会介绍接口是啥,怎么来的以及接口测试的必要性 接口是啥包括我自己在内,很多人初期接触接口都会认为接口是HTTP请求响应,这点没有错,但是接口这个概念在我个人理解却不仅仅限于HTTP接口。在我看来,接口指的是系统和系统之间的相

Cloud_Huan的专栏 1693

实战项目1—— 苍穹外卖项目【有侧重点的看和学习】

《苍穹外卖》项目开发流程与技术选型分析 摘要:本文介绍了黑马程序员《苍穹外卖》项目的企业级开发流程与技术架构。项目采用前后端分离模式,后端基于SpringBoot+MyBatis框架,前端使用Vue.js+ElementUI。开发流程包含需求分析、设计、编码、测试和上线运维六个阶段,详细说明了各岗位分工。技术选型涵盖了用户层(H5/Vue/小程序)、网关层(Nginx)、应用层(Spring系列框架)、数据层(MySQL/Redis)及常用开发工具。项目模块化管理分为公共模块(sky-common)、实体模

m0_55854679的博客 166

接口测试和UI测试的工作是否重复

接口测试和功能测试有些是重复的,接口测试和功能测试在业务逻辑上是重复的,但是接口测试更注重后端的交互,而功能测试可以注重前端UI的交互,这样的话各有侧重点, 在当前的行业中,很多公司基本上都是通过功能测试来进行接口测试的,有时候会省略接口测试,但是这种测试风险比较高,功能测试无法覆盖后端接口测试中性能和安全等测试点,导致测试不充分,有很高的上线风险 ...

chongyang_1590的博客 842

【软件测试】Web、App、接口自动化区别

Web自动化、App自动化和接口自动化是软件测试领域中的三种不同的自动化测试策略,它们针对的测试对象、测试工具和测试目的各不相同。选择适当的自动化测试方法取决于应用的类型、测试目标和资源。理解这些方法的区别和适用场景有助于更有效地规划和执行自动化测试策略。每种自动化测试方法都有其独特的优势和应用场景,选择合适的自动化测试策略需要根据项目的具体需求、资源和技术栈来决定。

weixin_46453070的博客 2490

超详细解说什么是接口测试和功能测试?

一、什么是功能测试 功能测试 就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。Functionaltesting(功能测试),也称为behavioral testing(行为测试)、黑盒测试或数据驱动测试 黑盒测试(Black-box Testing,又称为功能测试或数据驱动测试)是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。 二、功能测试怎么做 功能测试如何进行的:编写测试用例,测试用

qq_60168783的博客 2155

taobao-iphone-device:tidevice可用于与iPhone设备通信

tidevice 该工具能够用于与iOS设备进行通信,提供以下功能 截图 获取手机信息 ipa包的安装和卸载 根据bundleID启动和停止应用 列出安装应用信息 模拟Xcode运行XCTest,常用的如启动WebDriverAgent测试(此方法不依赖xcodebuild) 获取指定应用性能(CPU,MEM,FPS) 其他 支持运行在Mac,Linux,Windows上 安装 Python 3.7以上 pip3 install -U tidevice 使用 查看版本号 $ tidevice version 0.1.0 列出连接设备 $ tidevice list List of apple devices attached 00008030-001A35E40212345678 codeskyblue的iPhoneSE $ tidevice list --json [ {

hpm6750evk2开发板(四)TCP回送(1000M网口)

再接下来我们修改代码,先找到配置网速的地方,肯定是在enet的初始化函数里面,我们一个函数一个函数找,也可以用单步调试一步一步找,结果发现是在enet_init函数里面调用的rtl8211_basic_mode_default_config函数配置网速的,我们把enet_phy_port_speed_100mbps改为enet_phy_port_speed_1000mbps,重新编译运行试试。首先我们复制一份lwip_tcpecho代码,重命名为lwip_tcpecho_RGMII,如下图所示。

Silas1750的博客 922

接口测试和性能测试的区别

那配置场景这一步有区别吗?测试分很多种,如果细细罗列,从单测,接口,功能,性能,UI,至少有五层,那其实区分这些测试类型的关键点就在于测试的侧重点不一样,接口测试是针对后端开发的接口(不一定是http的,也有可能是tcp的),而性能测试是偏重于产品的各方面各阶段性能(接口的性能,页面的性能,app的性能),可以说性能测试的覆盖度比接口更大一些。以上三点都是衡量性能测试的标准,也是当执行性能测试场景出问题时候,用于定位问题的重要证据,所以我们可以知道,当接口测试出了问题,我们可以通过断言迅速知道出了问题;

OKC_0_Westbrook的博客 902

ESP32 STA AP模式下,设备连接 ESP的AP 后无法上网,无法访问域名上网(或者Failed to enable NAPT)

ESP32 STA AP模式下,设备连接 ESP的AP 后无法上网,无法访问域名上网(或者Failed to enable NAPT)1.可能是ESP STA模式未成功连接到路由器,确保 STA 成功连接到外部网络。2.检查 STA 和 AP 的网络配置是否正确,避免子网冲突。3.ESP32的NAPT功能未正确启用,确保 menuconfig 中已启用 IP_NAPT。4.DNS服务器未正确配置。

qq_34885669的博客 1540

【测试效率对比】深入分析:为何UI自动化测试的投资回报率通常低于接口自动化测试?

UI自动化测试真的比较难以实施吗?ROI真的比接口自动化测试低吗?从哪里得出如此结论?得出结论的人是否有真正实施过UI自动化测试呢?这些问题的答案可能不是绝对的,但是有一点可以肯定得出如此解决的人绝对没做过UI自动化测试!为什么题主敢这么说呢,且听题主娓娓道来!日拱一卒无有尽、功不唐捐终入海!

我先测了 1202

从建模到调参:基于Simulink的两轮差速机器人轨迹跟踪PID控制全流程解析

本文详细解析了基于Simulink的两轮差速机器人轨迹跟踪PID控制全流程,涵盖运动学建模、仿真环境搭建、PID控制器设计与实现等关键环节。通过Simulink仿真和可视化调试技巧,帮助开发者掌握移动机器人运动控制的核心技术,提升轨迹跟踪精度与性能优化能力。

weixin_28717683的博客 244

如何把ORCAD 中的修改同步到PADS 中

Generate ECO file(*.eco),eco 文件的默然保存地址是在pads 的。ECO Files (*.eco),接着在文件中找到所生成的eco 文件,找到。再下来是产生eco 文件,先打开old_design.pcb,然后选择。PCB Design 前面的选项选中,意思把当前文件做为原始的比对。安装目录下(可修改eco 文件的保存目录),这里把eco 文件保存。接下来用新生成asc 文件的文件产生新的PCB 文件,新生成。不对新生成的pcb 做任何的修改,直接保存文件,这里把新文件。

智光工作室 993

Go 项目怎么做好分层架构和目录规划

开发项目的时候我们都爱说XX模块,模块一般是跟着项目所服务的业务走的。而项目的分层则没有那么依赖具体的业务类型,靠一些软件设计的方法论和经验在项目搭建初期就能大体确定其结构。我给大家介绍一下Go项目的分层架构设计,把整个项目的结构按职能进行划分,规划出整个项目的目录结构。‍‍理论讲的再好,跟自己能上手实战还是有点距离,需要大量的结合场景的代码演示才能真正掌握,请扫码订阅专栏,除了能参考专栏学习项目...

kevin_tech的博客,微信搜「网管叨bi叨」 1490

全网最全医学图像数据汇总

本仓库汇总了多个领域的医学图像开源数据集,涵盖CT、MRI、超声、内窥镜、病理、多模态、PET、OCT以及皮肤镜等多种成像技术。每个数据集均详细列出了任务类型、部位、格式、数量及下载链接,旨在为医学图像研究者提供便捷的资源导航。⚠️:这些数据集仅适用于学术研究用途。

2401_83173765的博客 3319

软件接口与性能测试,接口测试与性能测试有什么区别?

最近我在一个论坛上看到了一个关于性能测试和接口测试的经典问题,问题如下:问题:后端性能测试,一个功能其实都是由后台多个接口组成的。例如一个单据的保存,可能后台需要调用几个接口。用LR录制这个功能做性能测试。和把它这个功能调用的几个接口连接起来一起做接口性能测试有什么区别呢?相信很多开始测试自动化的测试同学的入门都是从一些培训班或者网上课程开始的。很多培训在讲授接口测试或者性能测试的时候往往是拿Lo...

weixin_34565946的博客 917

Qt C++ + Qt 3D 的数字孪生工厂

以下是一个基于 **Qt C++ + Qt 3D** 的数字孪生工厂完整源码示例,集成了 **Qt 3D** 产线建模和 **WebSocket** 实时数据交互。ui->qualifiedProductsLabel->setText(QString("合格产品: %1").arg(data.qualifiedProducts));ui->totalProductsLabel->setText(QString("总产量: %1").arg(data.totalProducts));

寒寒豆豆软件公司的博客 149

【医学图像处理】X-ray成像之X射线的产生

【医学图像处理】X-ray成像之X射线的产生 概述 电流流过钨丝,并将其加热。 随着加热,增加的能量使电子能够通过热电子发射从灯丝中释放出来。 电子被吸引到带正电的阳极,并以由管电位(电压)确定的最大能量撞击钨靶。 当电子轰击目标时,它们通过轫致辐射和特有的相互作用将能量转换为热量(99%)和X射线光子(1%)。 X射线光子以一束能量(X射线光谱)从光束中释放出来,构成X射线图像形成的基础。 设备 阴极 灯丝 用细的(0.2毫米)钨丝制成,因为钨: 原子序数高(A 184,Z 74) 是良好的热

ZhangPY的专栏 2358

接口测试和功能测试的区别

一、什么是功能测试 功能测试 就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。Functionaltesting(功能测试),也称为behavioral testing(行为测试)、黑盒测试或数据驱动测试 黑盒测试(Black-box Testing,又称为功能测试或数据驱动测试)是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。 二、功能测试怎么做 功能测试如何进行的:编写测试用例,测试用例当中最

海淀码农 8577

26. Fabric2.2 司法存证的智能合约分析

有很多同学反馈 Fabric 智能合约读起来比较费劲,对于新手不友好看不懂,这里选择一个司法存证的智能合约,阅读、分析智能合约基础框架与核心流程代码,培养大家智能合约编写的方法论。

菜鸟的博客 1339
上一篇: 结合OWASP Top 10 初识安全测试
下一篇: 程序人生:为什么转行朋友都建议做软件测试!背后究竟是什么让我 最高月薪17K
字节自动化测试
博客等级 码龄6年 7034粉丝 1810原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值