2015-10-20 7 views
23

के साथ दृश्यमान है, तो मैं यह सत्यापित करना चाहता हूं कि कोई तत्व दृश्यमान है या नहीं, इसकी .hidden संपत्ति के आधार पर नहीं, लेकिन मुझे नई एक्सकोड 7 UI परीक्षण सामग्री का उपयोग करने के लिए एक वैध तरीका नहीं मिला है।परीक्षण करना यदि कोई तत्व XCode 7 UITest

मैंने myelement.exists और myelement.hittable के साथ प्रयास किया है लेकिन मुझे लगता है कि वे काम नहीं कर रहे हैं। मुझे लगता है कि वे hidden संपत्ति के साथ संयोजन के साथ काम करते हैं। एक छुपा तत्व मौजूद नहीं होना चाहिए और यह टिकाऊ नहीं है ... लेकिन यह वर्तमान व्यवहार नहीं है (मैं exists व्यवहार को समझ सकता हूं ... लेकिन एक छुपा तत्व आईएमओ को टिकाऊ नहीं होना चाहिए)।

क्या "छुपा" संपत्ति मूल्य सत्यापित करने का कोई और तरीका है?

उत्तर

23

एक्सकोड 7.1 बीटा 3 के रूप में, यूआई परीक्षण वर्तमान में किसी तत्व की दृश्यता को सत्यापित करने का समर्थन नहीं करता है। मैं एप्पल को आवश्यक ध्यान देने के लिए एक रडार दाखिल करने का सुझाव देता हूं।

एक्सकोड 7.1 ने इस समस्या को ठीक कर दिया है। hittable अब यह देखने के लिए जांचता है कि तत्व सही है या नहीं।

+2

यह मेरे लिए एक्सकोड 7.1 पर काम नहीं कर रहा है। मैं कुछ नियंत्रणों को गतिशील रूप से छिपाने के लिए अद्यतन करता हूं और बाद में परीक्षण करता हूं और यह हमेशा सत्य लौटाता है, भले ही नियंत्रण स्पष्ट रूप से छुपा हुआ हो। – Alex

+0

Xcode 7.2 hittable परीक्षण छिपा तत्वों के लिए ठीक से काम नहीं कर रहा है, या तो –

+0

Xcode 7.2.1 hittable परीक्षण छिपा तत्वों के लिए ठीक से काम नहीं कर रहा है – san

3

XCUIElement.hittable मेरे लिए काम करता (मेरी विशेष परीक्षण का मामला है जहाँ मैं दृश्यता के लिए कई UIButton तत्वों जाँच कर रहा हूँ में) - काफी यकीन है कि यह यह करने के लिए हालांकि

2

अगला कोड मेरे लिए काम किया एक सही तरीका नहीं है। परीक्षण के अंत में आप इस प्रकार पिछले कोड कर सकते हैं:

while ([app.staticTexts matchingIdentifier:@"accesibilityId"].count > 0) { 
     sleep(1); 
    } 
0

मैं hittable हमेशा बटन (स्विफ्ट 2.0, XCode 7.2) के लिए काम नहीं करता है इस बात से सहमत

मैं बस की खोज की बटन दिखाई दे रहा है कि अगर , आप बटनों के बीच ही इसे पा सकते हैं, जबकि बटन छिपा हुआ है, तो आप staticTexts में भी इसका टैग पा सकते हैं!

XCTAssertFalse(app.buttons["Log out"].exists && app.staticTexts["Log out"].exists) // This button is visible (hidden = false) 
XCTAssert(app.buttons["Log in"].exists && app.staticTexts["Log in"].exists) // This one is hidden 

हैकी, लेकिन बटन के लिए काम करता है। एप्पल सिर्फ परिचय चाहिए .hidden या .visible.hittable साथ और .exists

5

1) मैं Xcode 7.3 में तेजी के साथ UI का परीक्षण कर रहा हूँ और मैं या दोनों काम का परीक्षण एक लेबल छिपे हैं के लिए दोनों .hittable और .exists का उपयोग नहीं है और वे। मैं यह सुनिश्चित करने के लिए 'सत्य' और 'झूठी' के लिए परीक्षण करता हूं कि परिणाम के साथ किसी भी तरह से सहमत हो।

मेरे पास एक लेबल है जिसका स्थिर टेक्स्ट "ट्रैक जानकारी" है और जब ऐप पहली बार लोड होता है तो छुपाया जाता है, फिर बाद में मैं लेबल दिखाने के लिए एक बटन दबाता हूं, और लेबल दिखाए जाने के बाद परिणाम यहां होता है।

// परीक्षण विफल रहता है

let trackInfoLabel = app.staticTexts["Track info"] 
XCTAssertEqual(trackInfoLabel.exists, true) 

XCTAssertEqual(trackInfoLabel.hittable, true) 

// परीक्षण में सफ़ल

XCTAssertEqual(trackInfoLabel.exists, false) 
XCTAssertEqual(trackInfoLabel.hittable, false) 

// परीक्षण में सफ़ल

let trackInfoLabel = app.staticTexts["Track Info"] 
XCTAssertEqual(trackInfoLabel.exists, true) 

XCTAssertEqual(trackInfoLabel.hittable, true) 

// परीक्षण विफल रहता है

XCTAssertEqual(trackInfoLabel.exists, false) 
XCTAssertEqual(trackInfoLabel.hittable, false) 

जब मैं लेबल को छिपाने के लिए बटन दबाता हूं, तो सभी परिणाम विपरीत हो जाते हैं। यह पुष्टि करता है कि दोनों गुण (hittable और मौजूद) लेबल.hidden सेटिंग के लिए काम करता है।

2) पता लगाने के लिए अगर एक तत्व छिपा हुआ है, आप कर सकते हैं एक और तरीका है element.frame.size.width == 0 || है element.frame.size.height == 0

संबंधित मुद्दे