टाइमस्टैम्पड इवेंट मिलान त्रुटि: मिलान तत्व खोजने में विफल


94

मैं Xcode में एक UItest उत्पन्न करने की कोशिश कर रहा हूँ। जब मैं UIview को स्वाइप करने का प्रयास करता हूं तो मुझे एक त्रुटि मिलती है:

Timestamped Event Matching Error: Failed to find matching element

त्रुटि विंडो

यहां छवि विवरण दर्ज करें

यह भी होता है अगर मैं UIView को टैप करने की कोशिश करता हूं।


क्या आप थोड़ा और समझा सकते हैं?
डाइटर मीमकेन

मैं कुछ करने के लिए लगता है कि UIview पर ज़ोर से मारना या टैप करने की कोशिश करता हूं (इशारे को पुन: संयोजित करता है) लेकिन जब मैं करता हूं तो यह त्रुटि होती है। जिस तरह से मैंने इसे काम करने के लिए तैयार किया है वह प्रश्नों के साथ है, लेकिन यह वास्तव में जटिल है और यह सुनिश्चित करता है कि एक और तरीका है
Shay

जवाबों:


47

आपको यह सत्यापित करना चाहिए कि आपके द्वारा स्वाइप किए जा रहे यूआईईवीवाई ऑब्जेक्ट के लिए 'एक्सेसिबिलिटी' विकल्प सक्षम है, उदाहरण के लिए:

यहां छवि विवरण दर्ज करें


1
WebView के लिए एक्सेस-योग्यता चालू करने से WebView में पाठ को हल करते समय मेरे परीक्षण विफल हो गए। WebView की मेजबानी कर रहे UIView के लिए एक्सेसिबिलिटी ऑफ़ को चालू करने से परीक्षण सफल हो गए। तो खबरदार।
पूछीबोली

1
एक और बिंदु के रूप में यह मेरे लिए काम करने के लिए मुझे इसे एक लेबल देना था
सीन लिनटेन

मुझे यह पोस्ट fastlaneटेबल व्यू के स्क्रीनशॉट लेने के लिए मददगार लगी। stackoverflow.com/a/39331154/4475605
एड्रियन

यह कहां है? मैं इसे कैसे सेट करूं?
कोरी मैकएबॉय

@CoryMcAboy आप इसे अपने कस्टम दृश्य के लिए कोड से सेट कर सकते हैं:isAccessibilityElement = true
Gleb Tarasov

14

आमतौर पर यह समस्या तब देखी जाती है जब तत्व का मूल तत्व जो रिकॉर्ड करना चाहता है वह isAccessibilityElement = true पर सेट हो जाता है। सामान्य तौर पर, आपके पास बाल तत्व तक पहुंचने के लिए मूल तत्व को गलत पर सेट करना होगा। उदाहरण के लिए: यदि आपके पास एक दृश्य के भीतर एक UILabel है, तो पहुंच दृश्य के लिए झूठी होनी चाहिए और UILabel के लिए सही पर सेट होनी चाहिए।


1
यह बिल्कुल पुनरुत्पादक था। जैसा कि आपने कहा कि यह मूल तत्व का काम नहीं करता है isAccessibilityElement = true पर सेट है! के बाद मैं इसे वापस करने के लिए झूठे स्विच यह फिर से काम किया।
पोमेस

3

Xcode 9.3 में, जहां यह स्पष्ट रूप से अभी भी एक समस्या है, जो मैंने किया था:

  • एक्सकोड से बाहर निकलें
  • सिम्युलेटर की सेटिंग रीसेट करें (हार्डवेयर -> सभी सामग्री और सेटिंग्स मिटाएं)
  • सिम्युलेटर छोड़ो
  • वर्तमान एप्लिकेशन के लिए व्युत्पन्न डेटा हटाएं
  • Xcode पुनरारंभ करें
  • फिर से रिकॉर्डिंग करने की कोशिश करें - इसने इस बार मेरे लिए काम किया।

मैंने एक बटन के लिए पहचानकर्ता को "SkipButton" के रूप में प्रदान किया है और पहचानने वाले बटन पर, यह हमेशा विफल रहता है, मैं बटन को app.buttons ["SkipButton"] के रूप में पहचान रहा हूं, आपकी मदद की सराहना करता
हूं

ये कदम मेरे काम नहीं आया। वास्तव में, विजेट जो पहले समस्या से प्रभावित नहीं थे, प्रभावित हो गए।
ज्योफ एस

इसके पास कोई सामग्री क्यों नहीं है?
कौवा

2

एक नए परीक्षण की रिकॉर्डिंग के लिए, मुझे नहीं लगता कि अभी तक कोई समाधान है। लेकिन, यदि आप एक एक्सटेंशन फोर्सिंग टैप का उपयोग एक परीक्षण के साथ करते हैं जो पहले से मौजूद है, तो काम करता है।

उपयोग का उदाहरण:

extension XCUIElement {

    func forceTapElement() {
        if self.hittable {
            self.tap()
        }
        else {
            let coordinate: XCUICoordinate = self.coordinateWithNormalizedOffset(CGVectorMake(0.0, 0.0))
            coordinate.tap()
        }  
    }
}

func testSomethingWithCells() {

   let app = XCUIApplication()
   let cells = app.tables.cells
   sleep(1)
   cells.elementBoundByIndex(0).forceTapElement()
}

आप यहां मूल पोस्ट देख सकते हैं:

Xcode UI परीक्षण - UI परीक्षण विफलता - जब खोज फ़ील्ड "टैप" बटन पर टैप करने पर दृश्य (AX क्रिया द्वारा) स्क्रॉल करने में विफल रहा


elementBoundByIndex 'का नाम बदलकर' एलिमेंट (बाउंडबाय :) 'कर दिया गया है, जैसे: cells.element (बाउंडबी: 0) .tap ()
सुजानंत

2

मैं कभी-कभार इस समस्या में भाग रहा हूं। DerivedData से ऐप की डायरेक्टरी को डिलीट करने से मदद मिलती है।


1

एक समाधान जो स्वयं के लिए काम करता था, वह वस्तु को अलग तरह से पहचानना था।
Xcode 8 में मैं निम्नलिखित का उपयोग करने में सक्षम था:

XCUIApplication().tables.cells["Camera Roll"].buttons["Camera Roll"].tap()

Xcode 9 के साथ मुझे इस प्रश्न में उल्लिखित त्रुटि मिली। निम्नलिखित का उपयोग करके समाप्त हुआ, जिसने काम किया (मूल विकल्प की तुलना में अधिक परतदार है)

XCUIApplication().cells.element(boundBy: 1).tap()

@ अपने टेस्ट फंक्शन में डिवेलपर
Huy-Anh Hoang
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.