gpt4 book ai didi

ios - 在 iOS 13 UI 测试中访问 UIActivityViewController 上的按钮会导致崩溃

转载 作者:行者123 更新时间:2023-12-04 15:38:32 33 4
gpt4 key购买 nike

是否有其他人在使用 Xcode 11 运行 Xcode UI 测试时遇到问题,该测试针对 iOS 13 模拟器或在 UIActivityViewController 上查找按钮会导致崩溃的设备?

我有多个 UI 测试来验证 UIActivityViewController 中出现的按钮。他们完成了预期的设置工作,然后通过以下方式查找按钮:

XCTAssertTrue(app.buttons["Copy"].exists)

测试在 iOS 10、11 和 12 上运行良好。如果我尝试在 iOS 13 模拟器或设备上运行相同的测试,代码尝试访问 app.buttons 的那一刻,执行停止,然后我会得到 Thread 1: signal SIGABRT通过 Failed to get matching snapshots: Lost connection to the application (pid 33047). 在我尝试访问 app.buttons 的行。

添加等待甚至是老式的 sleep 都无济于事。我试图围绕 XCUIElementTypeQueryProvider 的其他一些查询进行挖掘,以找到没有运气的元素。

如果我在测试访问 app.buttons 之前调试测试并设置断点,并尝试打印它包含的内容,我会收到不同的错误消息。
po app.buttons
t = 49.37s Requesting snapshot of accessibility hierarchy for app with pid 37576
expression produced error: error: /var/folders/f2/zhwz28mn1hd815pc78kg02q80000gp/T/expr5-3b2971..swift:1:72: error: 'XCUIElementQuery' is not a member type of 'XCTest'
Swift._DebuggerSupport.stringForPrintObject(Swift.UnsafePointer<XCTest.XCUIElementQuery>(bitPattern: 0x10c73f4d0)!.pointee)

这确实感觉像是一个 Xcode 错误。有没有其他人遇到过这个?

如果其他人想尝试一下,这里有一些代码。

从 View Controller :

@IBAction func showPressed(_ sender: Any) {
let text = "I have something to share."

let vc = UIActivityViewController(activityItems: [text], applicationActivities: nil)
vc.popoverPresentationController?.sourceView = self.view

self.present(vc, animated: true, completion: nil)
}

用户界面测试:

func testActivityViewController() {
let app = XCUIApplication()
app.launch()

app.buttons["Show AVC"].tap()

let buttons = app.buttons
let copy = buttons["Copy"]
sleep(2) // Just keeping things simple for the example.

XCTAssertTrue(copy.exists)
}

最佳答案

我不确定这是在哪个版本中修复的,但从 Xcode 版本 11.2.1 (11B500) 开始,UI 元素的配置略有不同。以下是您现在可以从 UIActivityViewController 访问 Copy 按钮的方式:

XCUIApplication().otherElements["ActivityListView"].cells.containing(.label(equals: "Copy")).firstMatch

HT到 https://stackoverflow.com/a/48450562/19626对于 otherElements 选择器。

关闭/取消按钮也移动了。这是我找到它的地方:
XCUIApplication().otherElements["ActivityListView"].buttons["Close"].tap()

关于ios - 在 iOS 13 UI 测试中访问 UIActivityViewController 上的按钮会导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58176698/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com