我目前使用Apple的UIAutomation API在javascript中编写了许多函数测试。测试是为iPhone编写的,但该应用程序也支持iPad。
要扩展我的测试以在iPad上运行,我需要对代码进行一些调整,但首先我需要找出运行测试的设备。
当我从自动化工具运行javascript测试时,如何检测正在运行测试的设备/模拟器?。
答案 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;
}
};