首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >由Xcode bot运行时,UI测试在文本视图中键入文本时失败

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

Stack Overflow用户
提问于 2015-10-27 10:33:03
回答 6查看 5.4K关注 0票数 20

我有以下XCTest UI测试,它将文本输入到文本视图中。

代码语言:javascript
复制
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)

向苹果汇报。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-11-11 23:36:15

我为我的案例找到了一个解决方案,希望它也能对你有所帮助。

在我的setUp()tearDown()中(我知道这似乎是多余的),我放了XCUIApplication().terminate()。这是为了确保应用程序在运行下一个测试之前被终止,并且它似乎正在做这项工作。

代码语言:javascript
复制
override func setUp() {
    XCUIApplication().terminate()
    super.setUp()
    continueAfterFailure = false
    XCUIApplication().launch()
}
override func tearDown() {
    super.tearDown()
    XCUIApplication().terminate()
}

我向Apple提交了一个bug,但目前这可以帮助我绕过您所看到的错误。希望这能有所帮助!

票数 8
EN

Stack Overflow用户

发布于 2016-02-19 00:49:18

我认为根本的问题是“连接硬件键盘”是默认打开的。即使您对主用户关闭了此功能,_xcsbuildd用户仍会使用默认值。我能够通过使用以下脚本向方案中添加一个预测试操作来解决问题:

代码语言:javascript
复制
if [ `defaults read com.apple.iphonesimulator ConnectHardwareKeyboard` -eq 1 ]
 then
  defaults write com.apple.iphonesimulator ConnectHardwareKeyboard -bool false
  killall "Simulator"
fi

票数 19
EN

Stack Overflow用户

发布于 2016-02-18 01:10:00

我找到了另一个解决方案,因为Konnor提出的那个方案对我不起作用:我在Xcode Bot上使用UITest有很多问题,常见的症状是在模拟器上测试比在本地机器上花费更多的时间,所以我认为用来运行测试的_xcsbuildd用户在某种程度上变慢了。

我的解决方案很简单:只需将_xcsbuildd用户提升为“普通”用户。这还有另一个好处:如果您愿意,您可以使用该用户登录,并在集成过程中看到测试在模拟器中运行,因此更容易调试!

下面是我是如何做到的:

代码语言:javascript
复制
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

然后使用以下命令更改密码:

代码语言:javascript
复制
sudo dscl . -passwd /Users/_xcsbuildd

我无法让用户显示在快速登录窗口中,无论如何,您应该看到一个“其他用户”,您可以在其中插入用户名"_xcsbuildd“和您选择的密码

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33359023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档