17

这是我的自定义视图,"LondonStreet"按钮在哪里。

在此处输入图像描述

当我点击该按钮时,我会得到 url 并在 Safari 中打开它(它可以工作)。然后我可以返回,使用"Back to Wishlist"按钮(它也可以)。

在此处输入图像描述

问题是当我尝试在 UITests 下测试它时。

itemsTable.cells.elementBoundByIndex(0).buttons["addressButton"].tap() //press the button to open link in Safari

除了这一行:

app.statusBars.buttons["Back to Wishlist"].tap() //go back, doesn't work, although it was recorded by Xcode itself.

是一个错误:

UI 测试失败 - 未能在 5 秒内获得屏幕截图。

还有问题导航器

UI 测试失败 - 无法及时更新应用程序状态。

在此处输入图像描述

4

3 回答 3

50

从 iOS 11 开始,您可以使用 XCUIApplication(bundleIdentifier:) 初始化程序与其他应用程序交互。

要返回您的应用,您需要执行以下操作:

let myApp = XCUIApplication(bundleIdentifier: "my.app.bundle.id")
let safari = XCUIApplication(bundleIdentifier: "com.apple.mobilesafari")

// Perform action in your app that opens Safari

safari.wait(for: .runningForeground, timeout: 30)
myApp.activate() // <--- Go back to your app
于 2017-10-25T18:36:31.560 回答
8

UI 测试不能与应用程序之外的任何东西进行交互。在您的场景中,一旦您的应用程序打开 Safari,该框架就无法再做任何事情。

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

print(XCUIApplication().debugDescription)
于 2015-09-11T12:50:44.437 回答
1

在 iOS 15 上的 Safari 中打开特定网址:

safari.textFields["Address"].tap()
safari.textFields["Address"].typeText("www.urlToOpen.com")
safari.keyboards.buttons["Go"].tap()
于 2022-01-06T06:07:53.133 回答