我有以下XCTest UI测试,它将文本输入到文本视图中。
let textView = app.textViews.elementBoundByIndex(0)
textView.tap()
textView.typeText("Hello world")
当作为Xcode机器人运行时,它为typeText
调用显示以下错误。
断言: UI测试失败-失败:等待按键事件完成时超时
有趣的是,当我在同一台计算机上从Xcode手动运行它时,测试通过了。在升级到Xcode7.1/ iOS 9.1之前,Xcode机器人也通过了这项测试。问题的根源是什么?
下面是一个带有UI测试的独立演示:https://github.com/exchangegroup/UITestTextViewDemo
iOS 9.1模拟器、OS X 10.11.1 (15B42)、Xcode 7.1 (7B91b)、OS X服务器5.0.15 (15S4033)
向苹果汇报。
发布于 2015-11-11 23:36:15
我为我的案例找到了一个解决方案,希望它也能对你有所帮助。
在我的setUp()
和tearDown()
中(我知道这似乎是多余的),我放了XCUIApplication().terminate()
。这是为了确保应用程序在运行下一个测试之前被终止,并且它似乎正在做这项工作。
override func setUp() {
XCUIApplication().terminate()
super.setUp()
continueAfterFailure = false
XCUIApplication().launch()
}
override func tearDown() {
super.tearDown()
XCUIApplication().terminate()
}
我向Apple提交了一个bug,但目前这可以帮助我绕过您所看到的错误。希望这能有所帮助!
发布于 2016-02-19 00:49:18
我认为根本的问题是“连接硬件键盘”是默认打开的。即使您对主用户关闭了此功能,_xcsbuildd用户仍会使用默认值。我能够通过使用以下脚本向方案中添加一个预测试操作来解决问题:
if [ `defaults read com.apple.iphonesimulator ConnectHardwareKeyboard` -eq 1 ]
then
defaults write com.apple.iphonesimulator ConnectHardwareKeyboard -bool false
killall "Simulator"
fi
发布于 2016-02-18 01:10:00
我找到了另一个解决方案,因为Konnor提出的那个方案对我不起作用:我在Xcode Bot上使用UITest有很多问题,常见的症状是在模拟器上测试比在本地机器上花费更多的时间,所以我认为用来运行测试的_xcsbuildd用户在某种程度上变慢了。
我的解决方案很简单:只需将_xcsbuildd用户提升为“普通”用户。这还有另一个好处:如果您愿意,您可以使用该用户登录,并在集成过程中看到测试在模拟器中运行,因此更容易调试!
下面是我是如何做到的:
sudo dscl . -create /Users/_xcsbuildd UserShell /bin/bash
sudo dscl . -create /Users/_xcsbuildd FirstName Xcode
sudo dscl . -create /Users/_xcsbuildd LastName Server
sudo dscl . -create /Users/_xcsbuildd FullName "Xcode Server"
sudo dscl . -create /Users/_xcsbuildd PrimaryGroupID 20
然后使用以下命令更改密码:
sudo dscl . -passwd /Users/_xcsbuildd
我无法让用户显示在快速登录窗口中,无论如何,您应该看到一个“其他用户”,您可以在其中插入用户名"_xcsbuildd“和您选择的密码
https://stackoverflow.com/questions/33359023
复制相似问题