2016-07-11 13 views
0

Fehler: UI Testing Failure - Keine für MenuItems TrefferUI Testing Failure - Keine für MenuItems Treffer

UIPasteboard.generalPasteboard().string = constant.password 

    enterPasswordTextField.doubleTap() 

    // Tap the Paste button to input the password 
    app.menuItems["Paste"].tap() 

ich diesen Code in meinem Testfall geschrieben habe, habe ich auch Hardware-Tastatur für den Simulator versucht zu deaktivieren aber immer noch funktioniert die doubletap() funktion nicht.

Ich verwende Xcode 7.3.1.

Antwort

2

Sie müssen eine Erwartung hinzufügen, damit das MenüItem angezeigt wird. Beachten Sie, dass doubleTap() funktioniert nur, wenn das Textfeld bereits den Fokus hat, so dass Sie

let app = XCUIApplication() 

    UIPasteboard.generalPasteboard().string = "hello" 

    let enterPasswordTextField = app.textFields["textField"] 
    enterPasswordTextField.tap() 

    expectationForPredicate(NSPredicate(format: "count > 0"), evaluatedWithObject: app.menuItems, handler: nil) 
    enterPasswordTextField.doubleTap() 
    waitForExpectationsWithTimeout(10.0, handler: nil) 

    app.menuItems["Paste"].tap() 

Beachten Sie eine zusätzliche tap() vor doppelt tippen sollte hinzufügen, dass es nicht die beste Idee sein könnte, den Zugang der menuitem mit dem lokalisierten Test zu verwenden , da dies bei Geräten auf nicht-englischen Geräten fehlschlagen kann. Daher sollten Sie eine ausgeklügelte Logik verwenden, um den Speicherort des Einfügemenüelements zu bestimmen. Für den Anfang in der stark vereinfachte Hypothese, dass das Textfeld leer ist, können Sie

app.menuItems["Paste"].tap() 

mit

app.menuItems.elementsBoundByIndex(2).tap() 
+0

Hallo Tomas danke für die Antwort, aber es funktioniert immer noch nicht. –

+0

Was genau funktioniert nicht? Erhalten Sie einen Fehler? –

+0

Hallo Tomas, danke für die Antwort, aber es funktioniert immer noch nicht. Ich habe versucht, den gleichen Code und immer noch Fehler und ich möchte doppeltippen SecureTextField. (Nicht normal TextField) Fehler: Asynchrone warten gescheitert: überschritten Timeout von 10 Sekunden, mit unerfüllten Erwartungen: "erwarten Prädikat' count> 0' für Objekt < XCUIElementQuery: 0x7fb148f1cd60> ". –

0

Sie zwei Hähne separat ersetzt werden sollen - einen Fokus auf das Textfeld geben und dann eine, um die Menüpunkte aufzurufen.

Beachten Sie, dass bei Doppeltippen mit der Geschwindigkeit eines Doppelklicks auf ein inaktives Textfeld das Pasteboard-Menü nicht angezeigt wird. Versuchen Sie also, die Aktion in zwei separate Teile zu trennen. Wenn Sie möchten, fügen Sie zwischen jedem Tippen einen Schlafbefehl hinzu.