【问题标题】:Checking for app installation in XCUITest在 XCUITest 中检查应用程序安装
【发布时间】:2021-02-05 14:51:34
【问题描述】:

我正在尝试寻找一种可靠的方法来检查应用程序是否通过 MDM 下载并在设备上可用。我认为以下方法可行:

let authenticatorApp = XCUIApplication(bundleIdentifier: "com.microsoft.azureauthenticator")
XCTAssert(authenticatorApp.waitForExistence(timeout: 60))

但这似乎总是超时,即使应用程序已安装。

我能想到的唯一方法是检查 URL 方案的存在,但我认为这不适用于所有应用程序,因为有些应用程序没有。

有没有更好的办法?

更新:我尝试了launch()的do-catch,但它似乎没有抛出异常并且总是无法通过测试,所以这不起作用。我还尝试在 for 循环中观察状态(带有睡眠),但这也不起作用。

UPDATE2:我什至无法使用 canOpenURL() 路由来解决这个问题。即使我在“LSApplicationQueriesSchemes”中添加一个条目,我也会收到“不允许查询此应用程序”,我听说这在某些版本的 iOS(13?)上坏了

【问题讨论】:

  • 我找到的唯一答案要求应用程序有一个 URL 方案并使用它。
  • 不幸的是,我无法让它在 iOS 14.3 上运行。如果可以,请告诉我,如果可以,请告诉我 iOS 版本。

标签: xcode unit-testing testing automated-tests xcuitest


【解决方案1】:

您可以使用canOpenURL: 函数检查URL 方案但请记住!您无法检查方案的动态列表!因为从 iOS 9+ 开始,您必须将您的应用想要在 Info.plist 中的 LSApplicationQueriesSchemes 键(字符串数组)下查询的任何 URL 方案列入白名单:

此限制的原因是限制应用程序跟踪用户已安装的应用程序,AppStoreConnect 可能会询问您为什么认为要在审核过程中打开所有这些方案。

异步检查

您也可以使用open:options:completionHandler: 方法并检查completionHandler 内部。这种方法在 iOS 14 中尝试成功的可能性更大,但不要忘记它是异步任务!

【讨论】:

    猜你喜欢
    • 2019-12-12
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2020-03-24
    • 2014-12-02
    • 2013-09-16
    • 2011-10-14
    • 1970-01-01
    相关资源
    最近更新 更多