xcuitest - XCUITest - 单击主屏幕上的元素
问题描述
XCUITest 中有没有办法访问 HomeScreen 上的元素?
现在,如果我在后台运行正在运行的应用程序,然后尝试访问其上的元素。IE
XCUIApplication().launch()
XCUIDevice.shared.press(XCUIDevice.Button.home)
XCUIApplication().otherElements["Dock"].icons["Settings"].tap()
Failed to get matching snapshot: Application is not running
我也尝试了坐标并得到了相同的结果,因为坐标似乎也需要来自主应用程序的元素,而不是 HomeScreen。如果我也可以单击 HomeScreen 上的元素,那就太好了。
解决方案
是的,您可以使用 XCTest 与其他应用程序进行交互。
使用XCUIApplication(bundleIdentifier:_)
初始化设置与其他应用程序的交互。
在您的情况下,您可以打开设置应用程序
let springboard = XCUIApplication(bundleIdentifier: "com.apple.springboard")
springboard.icons("Settings").tap()
或完全跳过跳板并直接进入设置
let settings = XCUIApplication(bundleIdentifier: "com.apple.Preferences")
settings.launch()
您可以在此处找到系统应用程序的其他捆绑标识符:https ://github.com/rzakhar/XCTApps/blob/master/Sources/XCTApps/iOS.swift
推荐阅读
- python - 分组时我无法对值进行排序
- ruby - Cucumber:我想在我的所有场景都执行后通过电子邮件发送报告,有没有可以在 hooks.rb 中使用的类似“AfterAll”的方法
- powershell - Powershell 命令仅在导入 CSV 时有效 - 365
- python - AWS cloud9 pip install 转到 python 2.7 而不是 3.6
- python - python向量在大小为5的块中跨轴应用平均值
- java - Java Spring Boot中的Mongo Repository findById不起作用
- django - Django重命名类导致AttributeError:'str'对象没有属性'_meta'
- java - 了解优先队列的工作原理
- node.js - 本地 AWS API 网关
- c# - 无法将 lambda 表达式转换为类型对象,因为它不是委托类型