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

问题描述 投票:0回答:3

标题说几乎全部。我所拥有的是短暂的服务器进程,它提供基于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项目将重定向到服务于测试套件的服务器,并运行测试套件。

在iOS 4.0 SDK中,这仅适用于第一轮,下次测试套件运行程序尝试使XC执行上述例程时,它无法请求停止上一次运行。而且我不能为我的生活找到一种方法来停止与AS [1]的调试会话,所以我只能运行一个测试套件而无需人工干预,因为我们非常依赖,所以对我们来说几乎是一个显示器在夜间试运行。

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

到目前为止我发现的是iphonesim,但我遇到了this问题,无法让它正确启动预编译的应用程序。在iphonesim中解决这个问题的方法也是一个很好的前进方式。

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

iphone automated-tests mobile-safari
3个回答
1
投票

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

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

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

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

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


1
投票

这是可能的:

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

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


0
投票

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

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

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.