우리는 UIAutomation에서 XCUITests로 마이그레이션하려고합니다. UIAutomation에서 우리는 전체 하위 요소 트리를 크롤링하고 첫 번째 일치 항목을 두드린 편리한 'tapOnName'기능을 생각해 냈습니다.XCUIApplication의 일반 탭 기능
function log(msg) {
UIALogger.logDebug(msg);
}
//recursive function crawling thru an elements hierarchy
//and tapping on the first match of accessibilityIdentifier
//or button text
function tapOnNameWithRoot(name,el) {
if (el.name()==name && el.isVisible()) {
log("tap on itt!!!")
el.tap();
return true;
}
if (el.toString()=="[object UIAButton]" && el.label()==name) {
log("tap on Button!!!")
el.tap();
return true;
}
var elements=el.elements();
if (elements===null || elements===undefined) {
log("elements null or undefined for:"+el.toString());
return false;
}
for(var i=0,len=elements.length ;i<len;i++) {
if (tapOnNameWithRoot(name,elements[i])) {
return true;
}
}
return false;
}
var win = UIATarget.localTarget().frontMostApp().mainWindow();
//for ex taps on a button with the text "pushme" in the
//main UIWindow
tapOnNameWithRoot("pushme",win);
아니오 : XCUIApplication을 사용하여 동일한 기능을 구현할 수 있습니까?
매우 편리합니다. 우리는 모든 UI 요소의 이름을 고유하므로이 버튼, TabBar 버튼 등을 결정할 문제가 없습니다. – Leo
속도면에서는 좋지만 형식으로 필터링하면 검사 할 문자열 수가 더 적으므로 빠릅니다 식별자와의 일치를 위해, 또한 모든 요소의 목록을 살펴볼 필요가 없으므로 문제가 발생하면 디버깅을 좀 더 쉽게 할 수 있습니다. :) – Oletha