【发布时间】: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_OUTPUTrun_loop.out 似乎也没有给出任何指示。
我错过了什么吗?为什么touch没有任何作用,也没有激活键盘。任何帮助表示赞赏。
【问题讨论】:
-
你能用你调用的实际葫芦命令更新你的问题吗?
标签: ruby cucumber calabash calabash-ios