标题说几乎全部。我所拥有的是短暂的服务器进程,它提供基于Web的javascript测试套件,可选择附带后端进行集成测试(请参阅here了解它是如何完成的)。我正在寻找一种更好的方法来将iPhone模拟器的Safari引导到给定的URL。
更多,可能是可选背景:
直到iOS SDK 4.0我已经设法使用AppleScript控制XCode以这种方式启动一个特别准备的PhoneGap项目:
在iOS 4.0 SDK中,这仅适用于第一轮,下次测试套件运行程序尝试使XC执行上述例程时,它无法请求停止上一次运行。而且我不能为我的生活找到一种方法来停止与AS [1]的调试会话,所以我只能运行一个测试套件而无需人工干预,因为我们非常依赖,所以对我们来说几乎是一个显示器在夜间试运行。
现在,我真正想做的只是启动iPhone模拟器,然后在模拟器上启动Safari,可以向模拟的Safari发送任意URL。
到目前为止我发现的是iphonesim,但我遇到了this问题,无法让它正确启动预编译的应用程序。在iphonesim
中解决这个问题的方法也是一个很好的前进方式。
[1]我也接受这样做的方法作为一个有效的答案。
我有一个非常不同的解决方案。
编写一个仅包含Web视图的自定义iPhone应用程序。它的行为与MobileSafari几乎相同。然后,在应用程序中嵌入一个小的Web服务器。
然后,您可以通过调用该服务器上的特定网址来控制您的应用。
这是一个非常简单的应用程序。你需要花30分钟才能完成。
这很容易集成到Xcode或更大的(Apple)脚本中。您可以使用curl之类的命令打开URL。
这是可能的:
xcrun simctl openurl booted "https://google.com"
后脚本:最终是如何解决的。
在我问这个问题一段时间后,github上的用户在issue 3中添加了一条评论,你需要让iphonesim
正常工作就是给应用程序启动的绝对路径。所以现在我们有一个预建的PhoneGap项目,其中一个脚本修改了www
中build/Debug-iphonesimulator/PhoneGap.app
目录的内容。然后将该目录的绝对路径发送到iphonesim
,启动现在指向正确服务器的项目。没有AppleScript,也没有XCode(初始构建除外)。测试套件现在占用早期运行时间的1/7。