如何使用 XCUITEST 定位应用内购买抽屉元素?

问题描述 投票:0回答:2

我正在尝试使用沙盒帐户为我们应用程序的 IAP 编写 UI 测试。但是,当尝试点击此购买按钮时,测试无法找到此元素:screenshot of in-app-purchase prompt

我尝试通过按钮名称和标签名称来定位该元素,但没有成功。在 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

ios in-app-purchase xcuitest xcuielement
2个回答
1
投票

此前,Apple 根本不允许对 IAP 进行任何测试。 最近他们引入了对 StoreKit 框架的测试,但只是在单元测试级别;如果他们出于安全原因以编程方式阻止对自动化的访问,我不会感到惊讶。

如果要这样做,您需要找到正在“运行”的应用程序(StoreKit 窗口)的包标识符并与之交互。不幸的是,我没有可用的应用程序(可以购买的应用程序)来让我为您研究这个问题。

用力点击坐标(为了可靠性,我总是在 x 和 y 上添加一些像素)应该可以工作。从来不理想,但可能是你唯一的希望。

另一个选项是设置自动接受警报功能?它可能有用。

capabilities.SetCapability("autoDismissAlerts", true)


0
投票

通过反复试验,我发现可以通过 SpringBoard 来定位购买按钮。

let springBoard =  XCUIApplication(bundleIdentifier: "com.apple.springboard")
springBoard.buttons["Purchase"] // A match will return
© www.soinside.com 2019 - 2024. All rights reserved.