当Xcode bot运行时,文本在文本视图中键入时,UI测试失败

Evg*_*nii 17 uitextview ios swift xcode-ui-testing

我有以下XCTest UI测试,它将文本键入文本视图.

let textView = app.textViews.elementBoundByIndex(0)
textView.tap()
textView.typeText("Hello world")
Run Code Online (Sandbox Code Playgroud)

当作为Xcode bot运行时,它会显示以下typeText呼叫错误.

断言:UI测试失败 - 失败:等待键事件完成超时

在此输入图像描述

有趣的是,当我从同一台计算机上的Xcode手动运行时,测试通过了.在升级到Xcode 7.1/iOS 9.1之前,此测试也通过了Xcode bot.可能是问题的根源是什么?

这是一个带有UI测试的独立演示:https: //github.com/exchangegroup/UITestTextViewDemo

iOS 9.1模拟器,OS X 10.11.1(15B42),Xcode 7.1(7B91b),OS X Server 5.0.15(15S4033)

向Apple报道.

Dav*_*eck 17

我认为根本问题是默认情况下"连接硬件键盘"已打开.即使您为主用户关闭它,_xcsbuildd用户仍然使用默认值.我能够通过使用以下脚本向该方案添加预测试操作来解决问题:

if [ `defaults read com.apple.iphonesimulator ConnectHardwareKeyboard` -eq 1 ]
 then
  defaults write com.apple.iphonesimulator ConnectHardwareKeyboard -bool false
  killall "Simulator"
fi
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


cak*_*s88 7

我为我的案子找到了一个解决方案,我希望它对你有所帮助.

在我setUp()tearDown()(似乎多余我知道)我把XCUIApplication().terminate().这可以确保在运行下一个测试之前终止应用程序并且它似乎正在完成工作.

override func setUp() {
    XCUIApplication().terminate()
    super.setUp()
    continueAfterFailure = false
    XCUIApplication().launch()
}
override func tearDown() {
    super.tearDown()
    XCUIApplication().terminate()
}
Run Code Online (Sandbox Code Playgroud)

我向Apple提交了一个错误,但暂时这让我了解了你所看到的错误.希望有所帮助!


归档时间:

查看次数:

4435 次

最近记录:

8 年,7 月 前