在iPhone上以编程方式控制Safari的干净方式?

时间:2010-09-07 12:52:38

标签: iphone automated-tests mobile-safari

标题几乎全部说。我所拥有的是短期服务器进程,它提供基于Web的javascript测试套件,并可选择附带后端进行集成测试(请参阅here了解它是如何完成的)。我正在寻找一种更好的方法来将iPhone模拟器的Safari引导到给定的URL。

更多,可能是可选背景:

直到iOS SDK 4.0我已经设法使用AppleScript控制XCode以这种方式启动一个专门准备的PhoneGap项目:

  1. AppleScript(简称“AS”)启动XCode(简称“XC”)
  2. AS指示XC加载先前设置的PhoneGap项目。
  3. AS指示XC启动PhonePap项目。
  4. PhoneGap项目将重定向到服务测试套件的服务器,并运行测试套件。
  5. 在iOS 4.0 SDK中,这仅适用于第一轮,下次测试套件运行程序尝试使XC执行上述例程时,它无法请求停止上一次运行。而且我不能为我的生活找到一种方法来停止与AS [1]的调试会话,所以我只能运行一个测试套件而无需人工干预,因为我们非常依赖,所以对我们来说几乎是一个显示器在夜间试运行。

    现在,我真正想要做的只是启动iPhone模拟器,然后在模拟器上启动Safari,可以向模拟的Safari发送任意URL。

    到目前为止我发现的是iphonesim,但我遇到了this问题而无法正常启动预编译应用。在iphonesim中绕过这个问题的方法也是一个好方法。

    [1]我也接受这样做的方法作为一个有效的答案。

3 个答案:

答案 0 :(得分:1)

我有一个非常不同的解决方案。

编写一个仅包含Web视图的自定义iPhone应用程序。它的行为与MobileSafari几乎相同。然后,在应用程序中嵌入一个小型Web服务器。

然后,您可以通过调用该服务器上的特定网址来控制您的应用。

这是一款非常简单的应用。你需要30分钟才能完成。

这很容易集成到Xcode或更大的(Apple)脚本中。您可以使用curl之类的命令打开URL。

答案 1 :(得分:1)

现在可以:

xcrun simctl openurl booted "https://google.com"

https://apple.stackexchange.com/a/198798/144271

答案 2 :(得分:0)

发布脚本:最终是如何解决的。

在我提出这个问题后不久,github的用户在issue 3中添加了一条评论,iphonesim正常工作所需要的是提供绝对路径到应用程序开始。现在我们有一个预建的PhoneGap项目,其中脚本修改wwwbuild/Debug-iphonesimulator/PhoneGap.app目录的内容。然后将此目录的绝对路径发送到iphonesim,启动现在指向正确服务器的项目。没有AppleScript,也没有XCode(初始构建除外)。测试套件现在需要花费1/7的时间来运行。