我正在尝试使用沙盒帐户为我们应用程序的 IAP 编写 UI 测试。但是,当尝试点击此购买按钮时,测试无法找到此元素:
我尝试通过按钮名称和标签名称来定位该元素,但没有成功。在 UI 录制期间,当点击此按钮时,Xcode 完全冻结,我被迫关闭 Xcode。我还尝试了在此步骤中进行调试,当我在控制台中打印出“app.debugDescription”时,会返回此按钮或此购买抽屉中的任何其他元素。
失败的代码行:
app.buttons["Purchase"].tap()
错误信息:
No matches found for Elements matching predicate '"Purchase" IN identifiers'
Xcode版本:13.2.1 iOS版本测试(真实iPhone设备):15.3.1
此前,Apple 根本不允许对 IAP 进行任何测试。 最近他们引入了对 StoreKit 框架的测试,但只是在单元测试级别;如果他们出于安全原因以编程方式阻止对自动化的访问,我不会感到惊讶。
如果要这样做,您需要找到正在“运行”的应用程序(StoreKit 窗口)的包标识符并与之交互。不幸的是,我没有可用的应用程序(可以购买的应用程序)来让我为您研究这个问题。
用力点击坐标(为了可靠性,我总是在 x 和 y 上添加一些像素)应该可以工作。从来不理想,但可能是你唯一的希望。
另一个选项是设置自动接受警报功能?它可能有用。
capabilities.SetCapability("autoDismissAlerts", true)
通过反复试验,我发现可以通过 SpringBoard 来定位购买按钮。
let springBoard = XCUIApplication(bundleIdentifier: "com.apple.springboard")
springBoard.buttons["Purchase"] // A match will return