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

How do I target in-app purchase drawer element with XCUITEST?

我正在尝试使用沙盒帐户为我们应用程序的 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

以前,Apple 根本不允许对 IAP 进行任何测试。 Recently they introduced testing to the StoreKit framework, but it's at the unit testing level;如果他们出于安全原因以编程方式阻止对自动化的访问,我不会感到惊讶。

如果这可行,您需要找到“运行”(StoreKit window)应用程序的包标识符并与之交互。不幸的是,我没有可用的应用程序(一个可以购买)让我为您调查一下。

用力点击坐标(为了可靠性,我总是在 x 和 y 上添加几个像素)应该 有效。永远不理想,但可能是你唯一的希望。

另一种选择是设置 auto-accept 警报功能?它 可能 有效。 capabilities.SetCapability("autoDismissAlerts", true)