2017-07-26 1 views
0

J'ai donc une fenêtre qui apparaît en cliquant sur un élément du menu. Normalement, le premier textBox obtiendrait un focus immédiat sur le clavier, mais dans le UITest, rien dans la fenêtre n'obtient le focus du clavier (pas de bague de mise au point). Cette situation est problématique car du coup il me empêche de taper dans le champ de texte avec textField.typeText("someText")XCode UITest ne donnera pas le focus clavier NSTextField

J'ai essayé .click() sur la fenêtre et sur la zone de texte pour essayer de donner le focus, mais rien ne semble apporter la fenêtre ou zone de texte au point. Toute aide sera grandement appréciée

Exemple

MainMenu().menuItemForWindow.click() // Opens window 
app.windows["windowTitle"].textFields["textBoxId"].click() // Clicks but field does not gain focus 
app.windows["windowTitle"].textFields["textBoxId"].typeText("SomeText") // Is not typed into the textField 

Comme une note de côté, je l'ai vérifié que tous les éléments que je suis Interrogation n'existent réellement.

EDIT:

Je l'ai eu à travailler par littéralement spamming typeText() jusqu'à ce qu'il change la valeur de la zone de texte donné avec quelque chose comme

if let oldValue = textbox.value as? String { 
    var newValue: String? = oldValue 
    while newValue == oldValue { 
     textbox.typeText("a") 
     newValue = textbox.value as? String 
    } 
    //If we get here then we have edited the text box 
    textbox.typeText(XCUIDeleteKey) // Get rid of spam text 
    //TYpe what I want 
    //... 
} 

Cependant, cette méthode est aki et je ne peux pas J'ai vraiment mis un temps d'arrêt, sauf heuristiques (environ 15-30), donc j'espérais que quelqu'un pourrait aider à expliquer une meilleure façon de se concentrer sur la zone de texte ou au moins une explication de ce que je fais mal à l'origine. Toute aide serait grandement appréciée.

+0

Le clavier apparaît-il automatiquement lorsque vous exécutez l'application dans le simulateur sans test? Avez-vous essayé de basculer le paramètre de clavier matériel sur le simulateur? – Oletha

+0

Ceci est sur OSX et non sur iOS –

Répondre

0

Voici deux idées possibles pour vous:

  1. lui attribuez un identifiant l'accessibilité à l'objet que vous essayez d'interagir avec, et essayer d'adressage via l'ID d'accessibilité. De https://blog.metova.com/guide-xcode-ui-test:

For element identification there is additionally elementMatchingPredicate(NSPredicate) and elementMatchingType(XCUIElementType, identifier: String?).

These are separate from containingPredicate(NSPredicate) and containingType(XCUIElementType, identifier: String?) which are checking the element for items inside it whereas the elementMatching... options are checking the values on the element itself. Finding the correct element will often include combinations of several query attributes.

  1. Accessibilité dans les Activer Préférences Système | Accessibilité comme décrit ici: https://support.apple.com/en-us/HT204434, puis envoyer des commandes au clavier pour définir votre focus.