【问题标题】:Touch does not respond in Calabash-ios Xcode 6.1.1触摸在 Calabash-ios Xcode 6.1.1 中没有响应
【发布时间】:2015-03-03 02:07:20
【问题描述】:

最近开始在 iOS 上使用 Calabash。 我有一个简单的代码,它执行touch("label marked:'Username'"),然后使用keyboard_enter_text 输入文本,但是由于某种原因,当我从命令行通过黄瓜运行它或没有在Rubymine 中设置断点时,代码只是运行并且不会产生想要的结果,触摸似乎没有做任何事情,键盘也没有被激活。我在真实设备上执行此操作,(我尝试过各种设备)。

如果我使用断点使用 ruby​​ mine 调试代码,它会产生所需的结果。

我有以下设置

$ xcode-选择--打印路径 /Applications/Xcode.app/Contents/Developer $ xcodebuild-版本 Xcode 6.1.1 构建版本 6A2008a $葫芦-ios版 0.11.4 卷曲 http://:37265/版本 {"app_version":"4.3", “结果”:“成功”, "app_id":"****", “模拟器设备”:“”, “版本”:“0.11.4”, "app_name":"***", “iphone_app_emulated_on_ipad”:假, “4英寸”:真, "git":{"remote_origin":"git@github.com:calabash\/calabash-ios-server.git", “分支”:“主”,“修订”:“bcc992b”}, "screen_dimensions":{"scale":2,"width":640,"sample":1,"height":1136}, "iOS_version":"7.1.2", “系统”:“iPhone5,2”,“模拟器”:“”}

我已检查我的应用程序是否与正确的 calabash.framework 链接,并且它与 gem 版本 0.11.4 匹配

当我使用 ruby​​ mine 进行调试时,步骤成功运行(触摸有效并且键盘被激活),但是当我从命令行运行或在 Ruby mine 中没有断点运行时,触摸似乎失败而没有发出任何警告或错误。不知道是什么原因造成的,我已经从 Xcode 6.1 升级到 Xcode 6.1.1 也没有帮助。

我注意到过去有人报告过类似的问题,但它们一直存在于旧版本的 calabash iOS gem 中,并且应该已在 0.11.4 中修复

当我在 DEBUG=1 和 HTTP_DEBUG=1 的 DEBUG 模式下运行应用程序时,我可以看到下面

触摸不执行任何操作的命令行运行

`

! CONNECT TO <ip>:37265
! CONNECTION ESTABLISHED
POST /map HTTP/1.1
Content-Type: application/x-www-form-urlencoded
User-Agent: HTTPClient/1.0 (2.3.4.1, ruby 2.1.5 (2014-11-13))
Accept: */*
Date: Fri, 27 Feb 2015 16:19:55 GMT
Content-Length: 97
Host: <ip>:37265

{"query":"view marked:'Problems signing in?'","operation":{"method_name":"query","arguments":[]}}

= Response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Length: 66
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Date: Fri, 27 Feb 2015 16:19:56 GMT
Accept-Ranges: bytes
Access-Control-Max-Age: 3000

{"status_bar_orientation":"down","results":[],"outcome":"SUCCESS"}

`

使用断点从 ruby​​ mine 调试运行

CONNECT TO <ip>:37265
! CONNECTION ESTABLISHED
POST /map HTTP/1.1
Content-Type: application/x-www-form-urlencoded
User-Agent: HTTPClient/1.0 (2.3.4.1, ruby 1.9.3 (2013-06-27))
Accept: */*
Date: Fri, 27 Feb 2015 16:18:07 GMT
Content-Length: 97
Host: <ip>:37265

{"query":"view marked:'Problems signing in?'","operation":{"method_name":"query","arguments":[]}}

= Response

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Length: 478
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Date: Fri, 27 Feb 2015 16:18:08 GMT
Accept-Ranges: bytes
Access-Control-Max-Age: 3000

{"status_bar_orientation":"down","results":[{"text":"Problems signing in?","enabled":true,"rect":{"center_x":160,"y":504,"width":200,"x":60,"center_y":526,"height":44},"id":null,"description":"<UILabel: 0x14dde8d0; frame = (60 504; 200 44); text = 'Problems signing in?'; gestureRecognizers = <NSArray: 0x14dde1f0>; layer = <CALayer: 0x14dde980>>","label":"Problems signing in?","alpha":1,"class":"UILabel","frame":{"y":504,"width":200,"x":60,"height":44}}],"outcome":"SUCCESS"}= Request

` 我们可以看到,在 Rubymine 中运行的调试似乎返回了有关第一次运行时缺少的帧坐标的信息

运行失败

的 /var/folders/25/9_sb609576jcmgdbqt553ps08n5b5c/T/run_loop20150227-8208-1g7ccvv/run_loop.out 的日志输出 2015-02-27 16:19:51.871 仪器 [8229:591f] WebKit 线程违规 - 从辅助线程初始使用 WebKit。 2015-02-27 16:19:56 +0000 默认值:OUTPUT_JSON: {“状态”:“成功”,“值”:真,“索引”:0} END_OUTPUT

对于在 /var/folders/25/9_sb609576jcmgdbqt553ps08n5b5c/T/run_loop20150227-7941-1c6mznp/run_loop.out 处的成功调试运行(激活触摸和键盘)

2015-02-27 16:18:00.085 仪器 [7962:4f17] WebKit 线程违规 - 从辅助线程初始使用 WebKit。 2015-02-27 16:18:04 +0000 默认值:OUTPUT_JSON: {“状态”:“成功”,“值”:真,“索引”:0} END_OUTPUT

run_loop.out 似乎也没有给出任何指示。

我错过了什么吗?为什么touch没有任何作用,也没有激活键盘。任何帮助表示赞赏。

【问题讨论】:

  • 你能用你调用的实际葫芦命令更新你的问题吗?

标签: ruby cucumber calabash calabash-ios


【解决方案1】:

我有几个建议。这些不是明确的答案,但文本太长,无法发表评论。

我注意到过去有人报告过类似的问题,但它们一直存在于旧版本的 calabash iOS gem 中,并且应该已在 0.11.4 中修复

你能把你的 gem 和服务器更新到最新的 0.13.0 吗?自 0.11.4 以来已进行了许多修复。

你有没有可能看到这个:NSLog output can cause apps to become unresponsive during testing.

调试时工作

我怀疑这是因为时间问题,但在看到一些步骤或在 irb 中执行的命令列表之前我无法确认。

【讨论】:

  • 感谢您的回复,我将尝试将应用程序更新到最新的服务器以及 gem 并查看它的运行情况,同时我确实尝试在模拟器上以相同的行为运行它。正如你所建议的那样,在我看来也确实如此。升级到0.13.0后会更新
  • 同时我阅读了groups.google.com/forum/#!topic/calabash-ios/JWU_6VTKXMM,我的问题似乎是一样的。这个帖子已经有一段时间了。我的问题是,解决这个问题的建议方法是什么(假设我将开始使用 gem 的 0.13.0 版本),我们是否仍然需要在测试中插入 sleep 来解决这些问题,而且很多calabash-ios gem 提供的等待助手仍然无助于解决这个问题。
  • 那篇文章很古老,不再相关。这就是在 Google 论坛上提供支持的问题;无法整理答案。回复:插入睡眠——我用葫芦测试了一堆应用程序,而不仅仅是玩具/测试应用程序——真正的高调客户的真正应用程序。 wait_* 方法就足够了。您遇到的问题几乎肯定会通过更新您的 gem 版本和/或验证 NSLog 没有破坏 UIAutomation 来解决。
  • 谢谢,我同意谷歌论坛有时无法管理令人沮丧。我将尝试更新到 0.13.0 gem 和服务器,看看情况如何,我很高兴听到 wait_* 方法就足够了。在我继承的代码中,我们有很多睡眠和 Timeout::timeout(...),并将尝试将它们更改为葫芦提供的等待方法。
  • 升级到 0.13.0 但还是不行,可能是应用本身的问题。
猜你喜欢
  • 2016-09-22
  • 2013-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-19
  • 2016-11-13
  • 1970-01-01
相关资源
最近更新 更多