无法在UITest中查找/单击Apple Pay视图中的任何元素

时间:2016-06-10 23:50:45

标签: ios xcode xcode-ui-testing applepay

我已经能够在我的UITests中成功运行ApplePay,但是一旦显示PKPaymentAuthorizationViewController,该视图上的所有元素都无法定位,并且任何在底层应用程序视图上选择元素的尝试都会导致错误“.. ......不是最重要的“。

是否有其他人遇到此问题和/或有任何想法如何解决它?

3 个答案:

答案 0 :(得分:3)

Apple Pay UI会在流程外显示(即使您使用UIViewController子类触发它),因此我认为您无法通过UI测试来获取它。它是在流程外呈现的,因此应用程序无法修改或操纵Apple Pay视图。

答案 1 :(得分:1)

UI测试无法与应用程序之外的任何内容进行交互。在您的方案中,一旦您的应用程序显示Apple Pay视图,框架就再也无法执行任何操作。

要验证这一点,请在视图显示后尝试打印应用程序的层次结构。您会注意到Apple Pay和导航栏中的任何内容都不会显示 - 您只会看到应用程序的信息。

print(XCUIApplication().debugDescription)

答案 2 :(得分:0)

这有点棘手,但这是您可以执行的操作:

// create passbook app
let applePay = XCUIApplication(bundleIdentifier: "com.apple.PassbookUIService")

// wait for an auth controller to appear
_ = applePay.wait(for: .runningForeground, timeout: 5)

// tap pay button
applePay.buttons["Pay with Passcode"].tap()

此后授权将成功,您将获得苹果付款数据。

但是还有“一件事”-模拟器上的数据将为空,因此,如果尝试对其进行序列化,则会收到错误消息。所以我将数据模拟用于模拟器:

#if targetEnvironment(simulator)
     print("WARNING! SIMULATING APPLE PAY!")
     let payObject = [String: Any]()
#else
     let payObject = try JSONSerialization.jsonObject(with: encryptedData, options: [])
#endif
// send payObject to server