我正在使用探查器和UIAutomation为我的iOS应用程序编写测试。
如何获取我在代码中为其指定了accessibilityIdentifier的UIElement?这是我的问题。我有一个在iPad和iPhone上运行的通用应用程序。这些设备上的视图不同。我有2个略有不同的Xib文件。在iPhone上我有包含UILabel的ScrollBar。在iPad上我有ScrollBar包含UIView包含UILabel。这些标签与同一IBOutlet联系。我已经为IBOutlet分配了accessibilityIdentifier。
如何使用accessibilityIdentifier从JavaScript获取我的标签?可以在iPad和iPhone上使用相同的代码吗?
像
这样的东西var label = target.frontMostApp().mainWindow().elements()["myAccesibilityIdentifier"];
UIALogger.logMessage("Is label valid? " + label.isValid());
结果我得到了 标签有效吗?假
答案 0 :(得分:1)
看一下Mechanic(https://github.com/jaykz52/mechanic)。您可以按名称访问元素,它将为您搜索视图层次结构。 e.g。
var label = $('#myAccesibilityIdentifier');
答案 1 :(得分:0)
在自动化代码中,您可以辨别运行的iPad与iPhone(示例)
if(target.model()=="iPhone" || target.model() == "iPhone Simulator")
{
var phone = true;
var pad = false;
var appName = app.name();
UIALogger.logMessage("Testing device is: iPhone");
UIALogger.logMessage("Logger says: " + target.model());
UIALogger.logMessage("Application name: " + appName);
}
else if(target.model() =="iPad" || target.model() == "iPad Simulator")
{
var phone = false;
var pad = true;
var appName = app.name();
UIALogger.logMessage("Testing device is: iPad");
UIALogger.logMessage("Logger says: " + target.model());
UIALogger.logMessage("Application name: " + appName);
}
根据我在示例中设置的变量phone / pad,您可以指示脚本如何找到您要查找的元素。
if(phone)
{
//var label = Path to element (phone)
}
else if(pad)
{
//var label = Path to element (pad)
}
我知道一起使用pad / phone是多余的,但我最初是为了安全,以防将来第三种类型混入iOS开发(以防万一))。