Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios simulator Xcode 7用户界面测试失败,出现“0”;等待关键事件完成超时";_Ios Simulator_Automated Tests_Xcode Ui Testing_Build Server - Fatal编程技术网

Ios simulator Xcode 7用户界面测试失败,出现“0”;等待关键事件完成超时";

Ios simulator Xcode 7用户界面测试失败,出现“0”;等待关键事件完成超时";,ios-simulator,automated-tests,xcode-ui-testing,build-server,Ios Simulator,Automated Tests,Xcode Ui Testing,Build Server,我的团队和我一直在设置Jenkins服务器,以便在我们用作构建服务器的MacMini上自动运行单元和ui测试。这台Mac Mini没有外设,我们访问它的唯一方法是远程登录 当我使用Mac内置的屏幕共享应用程序远程登录机器时,使用iOS模拟器测试运行正常。但是,如果在测试运行时关闭远程连接,则涉及键入文本的ui测试将在尝试键入时失败,并出现以下错误(所有其他测试/ui测试都以优异成绩通过): 断言失败:等待密钥事件完成时超时 当Jenkins为我们自动运行测试时,这显然会导致一些问题,因为我们并不

我的团队和我一直在设置Jenkins服务器,以便在我们用作构建服务器的MacMini上自动运行单元和ui测试。这台Mac Mini没有外设,我们访问它的唯一方法是远程登录

当我使用Mac内置的屏幕共享应用程序远程登录机器时,使用iOS模拟器测试运行正常。但是,如果在测试运行时关闭远程连接,则涉及键入文本的ui测试将在尝试键入时失败,并出现以下错误(所有其他测试/ui测试都以优异成绩通过):

断言失败:等待密钥事件完成时超时

当Jenkins为我们自动运行测试时,这显然会导致一些问题,因为我们并不总是希望远程登录到机器上


我觉得这和模拟器的软件键盘有关,但我不明白为什么会有问题。mac电脑是否需要连接某种显示输出才能使用软件键盘或类似的东西?将显示器连接到机器(即使它没有真正被使用)会导致测试通过吗?为什么会出现这种情况?

这个问题可以通过关闭模拟器设置中连接的硬件键盘几个小时来解决

你也可以试试

我正在使用xcode 8.2.1并在ios 9.3版本上运行测试。一个简单的方法是在点击文本框后,在输入之前加上2-5秒的睡眠时间。尽管如此,这并不是一个永久的解决方案

另一个可靠的解决方案

在运行测试之前,取消选择“设置”中的所有键盘首选项

"KeyboardAllowPaddle": false,
"KeyboardAssistant": false,
"KeyboardAutocapitalization": false,
"KeyboardAutocorrection": false,
"KeyboardCapsLock": false,
"KeyboardCheckSpelling": false,
"KeyboardPeriodShortcut": false,
"KeyboardPrediction": false,
"KeyboardShowPredictionBar": false

在您展示了
CNContactViewController
实例之后,Xcode 10仍然存在相同的问题

避免编写需要调用CNContactViewController`实例的情况

或者有一个解决办法:

app.keys["1"].tap()
app.keys["2"].tap()
app.keys["3"].tap()

您可以将其粘贴到文本字段上,如下所示:

extension XCUIApplication {
  // The following is a workaround for inputting text in the
  //simulator when the keyboard is hidden
  func setText(_ text: String, on element: XCUIElement?) {
    if let element = element {
    UIPasteboard.general.string = text
    element.doubleTap()
    self.menuItems["Select All"].tap()
    self.menuItems["Paste"].tap()
    }
  }
}
运行时使用:

self.app?.setText("Lo", on: self.app?.textFields.firstMatch)

不确定它是否有用,但我记得MacMini在运行headless时没有充分利用GPU。我听说过一个,但从来没有试过。“关闭连接的硬件键盘”是关键。哦,苹果公司真的应该在这方面下功夫。