如何检测运行我的功能测试的iOS设备?

时间:2012-01-02 10:52:45

标签: ios xcode4.2 ios-ui-automation

我目前使用Apple的UIAutomation API在javascript中编写了许多函数测试。测试是为iPhone编写的,但该应用程序也支持iPad。

要扩展我的测试以在iPad上运行,我需要对代码进行一些调整,但首先我需要找出运行测试的设备。

当我从自动化工具运行javascript测试时,如何检测正在运行测试的设备/模拟器?

3 个答案:

答案 0 :(得分:1)

UIATarget.localTarget()。model() 保存有关运行测试的设备的信息。

我发现了Alex Vollmer's tuneup_js library。它至少在某种程度上允许与设备无关的代码。

e.g。)

test("my test", function(target, app) {
  assertWindow({
    "navigationBar~iphone": {
      leftButton: { name: "Back" },
      rightButton: { name: "Done" }
    },
    "navigationBar~ipad": {
      leftButton: null,
      rightButton: { name: "Cancel" }
    },
  }); 
});

修改

在tuneup_js中找到以下内容:

   /**
    * A convenience method for detecting that you're running on an iPad
    */
    isDeviceiPad: function() {
      return this.model().match(/^iPad/) !== null;
    },

    /**
     * A convenience method for detecting that you're running on an
     * iPhone or iPod touch
     */
    isDeviceiPhone: function() {
      return this.model().match(/^iPhone/) !== null;
    }

通过这些,我可以编写特定于设备的代码。

答案 1 :(得分:1)

按照此处提供的文档,您将获得所有信息: https://developer.apple.com/library/ios/#documentation/ToolsLanguages/Reference/UIATargetClassReference/UIATargetClass/UIATargetClass.html

//这是我用来获取设备名称,操作系统版本,包ID,目标等的脚本。

#import "tuneupjs/Utilities.js"
var target = UIATarget.localTarget();

var app_bundle_id = target.frontMostApp().bundleID();
UIALogger.logDebug("App Bundle Id : " + app_bundle_id);

if(app_bundle_id.strContains("ShazamDev"))
    UIALogger.logDebug("Running UIA Scripts for ShazamDev");

var device_name = target.name();
UIALogger.logDebug("Phone Name : " + target.name());

var device_model = target.model();
UIALogger.logDebug("Device Model: " + device_model);

//UIALogger.logDebug("System Name: " + target.systemName());

var ios_version = target.systemVersion();
UIALogger.logDebug("IOS Version: " + ios_version);

答案 2 :(得分:0)

以下是我的Utilities文件中的StrContains方法的代码

String.prototype.strContains = function(value, ignorecase) {
    if (ignorecase) {
        return (this.toLowerCase().indexOf(value.toString().toLowerCase()) != -1);
    }
    else {
        return this.indexOf(value) != -1;
    }
};