首页 > 其他分享 >深入了解设备交互 API 如何改变我们的生活

深入了解设备交互 API 如何改变我们的生活

时间:2024-03-12 10:58:24浏览次数:21  
标签:## driver 应用程序 获取 API 深入 交互 模拟 设备

简介

设备交互是自动化测试工具与移动设备进行沟通和掌握的过程,它不仅限于基本的应用元素点击和输入等操作。

在移动端应用程序测试中,设备交互的范围扩展到模拟通信方面和模拟设备本身的功能和行为,会涉及到设备的通信行为,例如模拟电话呼叫和短信发送,以及控制设备的一些系统级别的功能,例如网络连接状态、屏幕方向等。

通过这样的设备交互,测试人员可以更全面地评估应用在不同设备和环境条件下的表现,确保应用在实际使用中能够正常工作并提供良好的用户体验。

设备交互应用场景

  • 模拟电话和短信:在测试通讯类应用程序时,模拟电话呼叫和接听、发送和接收短信等操作可以帮助验证应用程序在与电话功能相关的场景中的行为和响应。
  • 网络模式:模拟不同的网络条件,如良好、较差或无网络连接等,可以测试应用程序在不同网络环境下的性能和容错能力。这可用于测试应用程序的网络请求、数据同步和离线模式的处理等功能。
  • 横竖屏切换:应用程序在不同屏幕方向下的布局和用户界面的适应性是非常重要的。通过模拟设备从横屏到竖屏或从竖屏到横屏的切换,可以验证应用程序在不同屏幕方向下的布局和显示效果。
  • App 处理:模拟应用程序被其他应用或系统中断(如来电、短信、通知等),然后再返回到应用程序中,可以测试应用程序在中断和恢复过程中的稳定性和用户体验。
  • 录屏:录制设备屏幕上的操作过程,可以用于制作演示视频、记录应用程序的缺陷复现步骤,以及在教学和培训中展示设备和应用程序的操作方法。

常用基础操作

锁屏与解锁

  • 锁屏:lock()
  • 解锁:unlock()
    • 判断是否锁屏:is_locked()如果是锁屏状态返回 True。

截图与录屏

  • 截图有两个方式:
    • get_screenshot_as_file('./photos/img01.png')
    • save_screenshot('./photos/img02.png')
  • 录屏:模拟器需要 androidAPI>27,华为不支持,只支持 8.0 以上的版本。
    • 开始录制:start_recording_screen()
    • 结束录制:stop_recording_screen()

打开通知栏

  • 打开通知栏: open_notifications()

获取当前屏幕分辨率

  • 获取当前屏幕分辨率:get_window_size()

模拟电话、短信

Appium 提供了模拟来电和短信的功能,这在测试中可用于验证应用在接收来电或短信时的响应。需要注意的是,这些模拟功能仅限于原生模拟器,不支持第三方的模拟器。

Python 示例

## 向号码拨打电话
driver.make_gsm_call("13822233001", GsmCallActions.CALL);
## 接听来自当前号码的电话
driver.make_gsm_call("13822233001", GsmCallActions.ACCEPT);
## 电话保持
driver.make_gsm_call("13822233001", GsmCallActions.HOLD);
## 终止与号码的通话,可用于取消拨号或挂断通话
driver.make_gsm_call("13822233001", GsmCallActions.CANCEL);
## 接收到来自该号码的短信
driver.send_sms("555-123-4567", "hello Appium");

网络设置

只有 Android 可以使用 set_network_connection 进行网络设置

Python 示例

## 获取当前网络状态
print(driver.network_connection)
## 设置为飞行模式
driver.set_network_connection(1)
## 只开启Wifi
driver.set_network_connection(2)
## 设置为只有数据为开启状态
driver.set_network_connection(4)
## 数据与Wifi均打开
driver.set_network_connection(6)

横竖屏切换

实现横竖屏切换的功能可以通过设置 driver 的属性 orientation 来修改,属性值的含义如下:

  • LANDSCAPE:切换为横屏
  • PORTRAIT:切换为竖屏

Python 示例

# 输出当前 driver 的属性
print(driver.orientation)
# 设置为横屏
driver.orientation == 'LANDSCAPE'
# 设置为竖屏
driver.orientation == 'PORTRAIT'

获取日志

执行代码是如果需要获取日志信息可以通过 get_log 方法查看,需要输入参数表示日志的类型,例如 logcat 表示获取 Android 设备上的日志,该方法返回一个包含所有日志信息的字典。

Python 示例

# 获取支持的日志类型
log_types = driver.log_types
print(log_types)

# 获取 `logcat` 类型的日志
logcat_logs = driver.get_log("logcat")
print(logcat_logs)

获取当前设备时间

Appium 提供了一个获取设备实际时间的方法,可通过调用 getDeviceTime 来获取。

Python 示例

# 打印出设备的实际时间
print(driver.get_device_time())

获取更多软件测试技术资料/面试题解析,请点击!

标签:##,driver,应用程序,获取,API,深入,交互,模拟,设备
From: https://www.cnblogs.com/hogwarts/p/18067810

相关文章

  • .NET Framework 4.8 Web API+Entity Framework(实现增删改查)
    1、首先,创建一个新的.NETFramework4.8WebAPI项目。2、定义Student类:publicclassStudent{publicintId{get;set;}publicstringName{get;set;}publicintAge{get;set;}}3、创建DbContext类:usingSystem.Data.Entity;publicclassS......
  • PyPI的简单仓库API
    翻译:https://packaging.python.org/en/latest/specifications/simple-repository-api/SimplerepositoryAPIHostURL:https://pypi.org/simple/BaseHTMLAPI直接请求根URL/返回一个HTML5的页面,包含了每个项目的超链接标签,其中标签文本是项目名称,herf属性是项目的链接。<!D......
  • C# WebApi定时任务FluentScheduler的使用
    第一步:通过NuGget包下载安装FluentScheduler包;第二步:在全局配置文件Global.asax中注册定时任务,方法如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.Http;usingSystem.Web.Routing;usingFluentScheduler;......
  • UI自动化、性能、API测试一体平台:RunnerGo
    UI自动化测试已经成为现代软件开发过程中不可或缺的一部分。它能够提供诸多优势,包括提高测试效率、减少人力成本、提升软件质量等。同时,可视化工具为UI自动化测试带来了更多便利和灵活性。RunnerGo近期上线脚本录制器,根据你的测试操作直接生成UI自动化测试脚本,下面是使用方法Step......
  • 简述Kubernetes各模块如何与API Server通信
    K8sAPIServer作为集群的核心,负责集群各功能模块之间的通信。集群内的各个功能模块通过APIServer将信息存入etcd,当需要获取和操作这些数据时,则通过APIServer提供的REST接口(用GET、LIST或WATCH方法)来实现,从而实现各模块之间的信息交互。1)kubelet进程与APIServer的交互:每个Nod......
  • 高德地图 离线地图jsapi2.0 插件引用
    当引用一个插件,但是这个插件没有时会报错:UncaughtTypeError:AMap.ControlBarisnotaconstructor这里引用了罗盘这个插件这时候需要翻看高德的离线js了目前有两种逻辑:一个是同级目录下下载一个对应插件的js。还有一个是目录下有mapsplugin.js,通过这个插件来加载的,那么......
  • 知道年月日,周几,请算出某个月零某天后是星期几,距离现在多少天(请用代码实现,谢绝调用 API
    //定义一周的中文名称publicstaticString[]week={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};//定义平年每月天数publicstaticint[]monthday1={0,31,28,31,30,31,30,31,31,30,31,30,31};//定义闰年......
  • Windows Server 2012R2 丢失api-ms-win-crt-runtime-l1-1-0.dll
    在网上搜索了很久,没有现成的帖子可以解决。安装补丁不是提示“一个或多个问题导致了安装失败”就是此更新不适用于你的计算机。最终在微软官网读到补丁安装要遵守一个顺序,在此特地把解决过程分享出来,希望能帮助到苦于搜索的人报错信息 无法启动此程序,因为计算机中丢失api-ms......
  • 简单懂点k8s网络(5)深入理解kube-proxy
         ......
  • [LeetCode] 2129. Capitalize the Title
    Youaregivenastringtitleconsistingofoneormorewordsseparatedbyasinglespace,whereeachwordconsistsofEnglishletters.Capitalizethestringbychangingthecapitalizationofeachwordsuchthat:Ifthelengthofthewordis1or2letters......