【问题标题】:calabash-ios not working with iOS 7.1 Simulatorscalabash-ios 不适用于 iOS 7.1 模拟器
【发布时间】:2015-09-09 07:32:15
【问题描述】:

我正在尝试使用 Calabash 进行一些自动化 UI 测试,当我在 iOS 8 模拟器上运行时一切正常,但是,当我切换到 iOS 7 模拟器时,它似乎无法完全启动应用程序。

应用程序将打开,完成启动画面,然后很快就会崩溃,calabash 将再次重试。这会无限期地持续下去,直到我手动退出它。

在运行之间唯一改变的是我的设备目标,目前我正在使用以下设备目标:

DEVICE_TARGET="iPhone 5 (7.1 Simulator)"

当我在 8.4 设备上运行时,它看起来像下面这样:

DEVICE_TARGET="iPhone 5 (8.4 Simulator)"

任何想法为什么这不起作用? calabash-ios 不支持 7.1 吗?

更多信息:

  • Calabash 是 0.14.3 版本
  • 只要运行 iOS 8 或更高版本,它就可以在其他模拟器、iPhone 6、iPhone 6 Plus、iPhone 5s 上完美运行
  • 目前我无法在 iOS 8 上进行我想做的特定测试,我们有一个 UI 错误只存在于 iOS 8 中,所以这个特定的测试暂时需要在 iOS 7 中运行,直到界面问题已修复
  • 我知道我正在尝试运行的功能有效,并且我的葫芦设置是正确的,这是我需要运行和编写的最后一个测试脚本之一,并且所有其他的都可以完美运行,所以我怀疑它可能是 iOS 7 的问题,或者我的 iOS 7 模拟器与 iOS 8 相比的设置方式。

如果您能提供任何帮助,我将不胜感激!

【问题讨论】:

    标签: ios calabash calabash-ios


    【解决方案1】:

    更新这个SO answer有一些关于如何解决这个问题的建议。

    Calabash iOS 正式支持 Yosemite 上的 iOS >= 7.1 模拟器和 Mavericks 上的 iOS >= 7.0.3。

    您在物理设备上是否有同样的问题?

    如果你有:

    1. 更改了文件系统上的位置或重命名了 Xcode.app 目录,
    2. 安装了新的 Xcode 版本,或者
    3. 安装了新的 iOS 模拟器

    您必须重新启动 Mac 才能使 CoreSimulator 环境恢复正常。

    话虽如此,我正在为运行循环进行集成测试,并且在 Yosemite 上的 Xcode 6.4 中启动 iOS 7.1 模拟器时看到了无法解释的错误。看起来 UIAutomation 在优胜美地的 iOS 7.1 模拟器上不可用。

    $ DEBUG=1 be run-loop instruments \
       launch --app ./CalSmoke-cal.app \
       --device "iPhone 5s (7.1 Simulator)"
    Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
    0   libsystem_kernel.dylib          0x00000001032a6286 __pthread_kill + 10
    1   libsystem_sim_c.dylib           0x0000000102fd4e59 abort + 101
    2   com.apple.ScreenReaderCore      0x00000001047d3114 SCRCUncaughtExceptionHandler + 97
    3   com.apple.CoreFoundation        0x0000000100691bf5 __handleUncaughtException + 629
    4   libobjc.A.dylib                 0x00000001025bebf5 _objc_terminate() + 94
    5   libc++abi.dylib                 0x0000000102e4de91 std::__terminate(void (*)()) + 8
    6   libc++abi.dylib                 0x0000000102e4d91d __cxa_throw + 124
    7   libobjc.A.dylib                 0x00000001025bea9d objc_exception_throw + 298
    8   com.apple.CoreFoundation        0x000000010060d2ad +[NSException raise:format:] + 205
    9   com.apple.UIAutomation          0x0000000100de96f7 +[UIAXElement initializeAccessibility] + 540
    10  com.apple.UIAutomation          0x0000000100dec791 +[UIAXElement uiaxSystemWideElement] + 36
    11  com.apple.UIAutomation          0x0000000100dff833 -[UIATarget init] + 300
    12  com.apple.UIAutomation          0x0000000100dff6f9 +[UIATarget localTarget] + 53
    13  ScriptAgent                     0x0000000100008ea8 0x100000000 + 36520
    14  ScriptAgent                     0x0000000100004b17 0x100000000 + 19223
    15  ScriptAgent                     0x0000000100006e22 0x100000000 + 28194
    16  libdyld.dylib                   0x00000001031795c9 start + 1
    

    我在运行循环上尝试了几个补丁,但没有任何效果。

    Console.app 也有这个

    com.apple.CoreSimulator.CoreSimulatorService[81434]: Failed to open 
    /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 7.1.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/host/liblaunch_sim.dylib: 
    dlopen(/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 7.1.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/host/liblaunch_sim.dylib, 1): no suitable image found.  
    Did find:
    /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 7.1.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/host/liblaunch_sim.dylib: 
    mmap() error 1 at address=0x11837B000, size=0x00002000 segment=__TEXT in Segment::map() 
    mapping /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 7.1.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/host/liblaunch_sim.dylib
    

    【讨论】:

    • 该死的......感谢您提供非常详细的答案!由于我对自动化 UI 测试还很陌生,这让我对 calabash 有了很多了解。好吧,看来我要出差解决 iOS 8 中的 UI 问题,以便进行测试。
    猜你喜欢
    • 2016-01-21
    • 1970-01-01
    • 2014-07-18
    • 2015-11-10
    • 2012-04-08
    • 2015-04-25
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    相关资源
    最近更新 更多