我正在将Calabash集成到一个大型项目中。我让Calabash在测试应用程序中工作,所以我知道我的安装和环境设置正确。我正在使用辅助功能标签和.feature文件来点按按钮,然后在字段中键入文本。效果很好。

但是,我的“实际”项目更大,更复杂。即使配置与测试应用程序相同(请参阅下面的统计信息),当我在真实应用程序上运行一个简单的.feature文件时,我仍然得到了不稳定的结果:大约80%的时间,它挂起,直到通过“.feature文件的“给定”行,最终因以下消息而超时:

Retrying.. HTTPClient::ReceiveTimeoutError: (execution expired)

我注意到在这些情况下,当我尝试使用鼠标与之交互时,该应用完全无响应。它似乎已经冻结了。还有一个UIAlertView应该出现,但是永远不会出现。请注意,当我从XCode(相同的“-cal”目标)启动模拟器时,它永远不会冻结。我可以与它进行交互,出现UIAlert,一切正常。

其他20%的时间,它将使它更远地进入我的.feature文件中-只要不涉及与屏幕的交互,它将有效地传递“给定”行以及其他可能的行。任何轻击或键入命令都将导致其挂起并最终超时,并显示与上述相同的“执行到期”消息。

经过大量调查,我消除了此应用程序的环境/配置与测试应用程序之间的任何可能差异,并确定我的应用程序中肯定有Calabash确实不喜欢的东西!不幸的是,我对葫芦太陌生,不知道从哪里开始寻找。任何帮助,将不胜感激。

根据葫芦团队的要求进行诊断:
> xcode-select --print-path
/Applications/Xcode.app/Contents/Developer
> xcodebuild -version
Xcode 6.1
Build version 6A1052d
> calabash-ios version
0.11.3
> calabash.framework/Resources/version
0.11.3
irb(main):006:0> server_version
{
                    "app_version" => "0.10",
                        "outcome" => "SUCCESS",
                         "app_id" => "<redacted>",
           "simulator_device" => "iPhone",
                        "version" => "0.11.3",
                       "app_name" => "<redacted>",
    "iphone_app_emulated_on_ipad" => false,
                          "4inch" => true,
                            "git" => {
        "remote_origin" => "git@github.com:calabash/calabash-ios-server.git",
               "branch" => "master",
             "revision" => "40c6245"
    },
          "screen_dimensions" => {
         "scale" => 2,
         "width" => 640,
        "sample" => 1,
        "height" => 1136
    },
                    "iOS_version" => "8.1",
                         "system" => "x86_64",
                      "simulator" => ""
}

最佳答案

您是否尝试过将葫芦更新为.13?并添加了CFNetwork框架吗?

并且添加了-force_load“$(SRCROOT)/calabash.framework/calabash” -lstdc ++吗?

很抱歉缺少信息,这是我能提供的所有信息?如果您已解决问题。你可以关闭它吗?

10-08 07:22
查看更多