Answers:
我在Xcode 11.3中运行简单的UITest时遇到匹配问题。要使其正常工作,我必须首先粘贴:XCUIApplication().activate()
或XCUIApplication().launch()
。
我在Xcode 11中也遇到了同样的问题,并且意识到停止测试时(或者由于某种原因导致测试崩溃)测试运行程序并没有被杀死。第二次运行测试会产生一个新的测试运行程序,那时我有两个运行程序试图与同一个应用程序进行交互,从而导致了这个非常奇怪的错误。
为了证明我做到了以下几点:
解决方法是退出并重新打开模拟器,以确保所有进程都被杀死。希望这能解决您的问题
killall "Simulator" 2> /dev/null; xcrun simctl erase all
,您可以运行,或者,如果您使用快速通道,则扫描中会有一些选项可以重置模拟器。
我有时会在Xcode 11.1中遇到此问题。我观察到该问题在等待UI元素时发生,尤其是在测试过程中显示了Web视图。问题发生时,我正在使用XCUIElement.waitForExistence(timeout:)
或期望使用NSPredicate(format: "exists == true")
。当我改用期望值时NSPredicate(format: "hittable == true")
,问题似乎消失了,但我不知道为什么。这两个属性之间的区别在于,hittable
仅检测屏幕上的元素,而exists
检测屏幕外的元素,例如表格视图的屏幕外单元。
expectation(for: NSPredicate(format: "hittable == true"), evaluateWith: element, handler: nil)
waitForExpectations(timeout: 60, handler: nil)