自动化Xcode'调试>模拟位置命令

时间:2016-07-21 01:58:29

标签: ios xcode automator

是否有任何编程方式来控制xcode > simulate location命令?我有外部位置测试脚本我想运行,理想情况下,测试套件可能会导致xcode随意更改已连接手机的位置。

这是可能的,如果是这样的话?

4 个答案:

答案 0 :(得分:7)

不确定它是否完全符合您的要求,但您可以通过在方案中进行设置,让不同的单元测试包使用不同的位置(或GPX文件)。

然后,您可以在每个捆绑包中进行单元测试,以测试您对该特定位置的需求。

Scheme

xctool也可以使用-only选项在特定目标中运行单元测试:

path/to/xctool.sh \
  -workspace YourWorkspace.xcworkspace \
  -scheme YourScheme \
  test -only SomeTestTarget

答案 1 :(得分:5)

有一个名为Pokemon-Go-Controller的GitHub项目正是您想要的。

解决方案概述:

  1. 创建gpx文件
  2. 创建引用(不复制)gpx文件并在您的设备上运行的空白项目
  3. 运行自动点击器,该点击器会不断点击Xcode中的update location
  4. 使用某个脚本更新gpx文件,设备位置将自动更新
  5. 您可以使用此Apple脚本代替自动点击器:

    #Will continue update the location to the location name below from Xcode:
    
    property locationName : "pokemonLocation" #name of your gpx filex
    
    ###########################
    tell application "System Events"
        tell process "Xcode"
            repeat while true
                click menu item locationName of menu 1 of menu item "Simulate Location" of menu 1 of menu bar item "Debug" of menu bar 1
                delay 0.2
            end repeat
        end tell
    end tell
    

答案 2 :(得分:2)

是的,有可能。 1.按@InsertWittyName的答案或as described in this blog post中所述设置GPX文件。 2.使用Instruments使用不同的GPX文件在Simulator中运行您的应用程序。

我会写出整个过程,但someone more eloquent than myself already has

作为狂热的S / O用户,我会失去基本上单链接的答案。所以这里有一些额外的奖励信息。

  1. 你一定要看看security testing your location aware features。今年我将参加Black Hat,所以如果你在那里,我们来谈谈吧!

  2. 如果您不喜欢之前链接/解释的答案,可以使用XCTest代码来模拟不同的位置(like this)。

  3. 看起来还有Apple Script解决方案,like this one

  4. 我希望我至少提供了足够的信息,不仅仅是一个懒惰的链接答案。享受,祝你好运!

答案 3 :(得分:0)

idevicelocation是一个命令行工具,用于模拟ios设备中的地理位置。

用法:
$ idevicelocation [OPTIONS] LATITUDE LONGITUDE

设置通过两个参数的位置,纬度和经度:

$ idevicelocation 48.856614 2.3522219000000177

传递负值:

$ idevicelocation 77.432332 -- -7.008373564

停止位置模拟:

$ idevicelocation --stop

选项:

-d enable connection debug messages.<br/> -u specify device UDID.<br/> -h help.<br/> -s stop location simulation on device.

它使用libimobiledevice库与进程com.apple.dt.simulatelocation进行通信,该进程也被Xcode在内部用于同一目的。
README文件中有构建说明。
确保在进入随机位置之前安装正确的开发人员图像。
感谢Angulo编写这个很棒的实用程序。

这个工具目前没有附带libimobiledevice软件包,尽管有Pull Request个问题已经搁置了很长时间。