0
votes

async / attendre est toujours de retour non défini

Dans mon application de Protractor, j'ai la méthode ci-dessous qui est supposée renvoyer la valeur boolean code>, selon qu'elle trouve l'élément ou non.

async getTheValueOfEntery(entery: string) {

  var value = await element(by.xpath(entery))
    .isPresent().then((isExist, entery: string) => {
      isExist ? element(by.xpath(entery)).getText() : 0;
    });

  return value;
}


3 commentaires

Pourquoi faites-vous .Chen ((isexist) => {isexist;}); du tout, qu'essayez-vous de réaliser avec cela? Évitez attendre ing A .Chen (...) chaîne !


Oui, mais vous devriez toujours faire simplement const isexist = Await élément (by.xpath (enterery)). Ispresent (); Si (Isexist) Numéro de retour (Elément attendu (by.xpath (ENTERY)). GetText ()); sinon retour 0; .


Si vous avez une nouvelle question, demandez-lui un nouveau mais ne changez pas votre question initiale à quelque chose d'autre. Cela rend toutes les autres réponses fatiguées pour résoudre votre question originale.


3 Réponses :


1
votes

Faites attention à ceci:

async getTheValueOfEntery(entery:string){
    return (await element(by.xpath(entery))).isPresent();
}


3 commentaires

Votre exemple final est en attente de ispresent et qui n'est pas asynchronisé. Vous avez besoin de parenthèses.


C'est juste appelé la fonction arrow. Vous appelez probablement la graisse flèche si vous venez du contexte de Coffescript. Mais la spécification du script de l'ECMA nomme juste Fonction arrow .


@ T.Niese Ouais, mais quand il a été introduit, tout le monde a appelé "Frow Fonctions", peut-être de toujours se souvenir de la forme!



-1
votes

Le retour de attendre code> est vraiment le puis code> param. Vous n'avez pas besoin du puis code> du tout. Le résultat du puis code> est ce qui renvoie non défini code>.

var isExist = await element(by.xpath(entery))
        .isPresent()
var value = isExist ? await element(by.xpath(entery)).getText() : 0;
        });

      return value;


2 commentaires

Vous n'utilisez pas attendre et ensuite ensemble. Vous venez de vous attendre.


Votre code renvoie avant l'exécution de ce qui est même exécuté. Où devrait-il être le cas dans le code de l'OP? Le attendre pour le retour de la promesse par l'expression chaînée (donc celui-ci renvoyé par le dernier .Chen )



1
votes

Vous ne retournez rien de votre fonction de flèche, de sorte que la resul de ce soit non défini . Si vous écrivez: xxx

alors c'est comme si vous écrivez: xxx

vous devez donc ajouter un retour < / code>: xxx

ou supprimer le {} : xxx

et si vous Ne faites rien avec la variable la valeur sauf de le renvoyer, vous n'avez pas besoin d'utiliser attendre . Vous pouvez simplement écrire: xxx

le async serait alors en théorie non requis, mais cela ne nuit pas et il montrera que cette fonction va retournez toujours une promesse.


2 commentaires

@KamyarParasesh Votre question originale est sur async / attendre est toujours renvoyée indéfini et bot sur cette erreur que vous avez mentionnée, c'est un sujet complètement différent.


Pourriez-vous s'il vous plaît examiner ma question une fois de plus? @ T.Niese Désolé, je supprimai temporairement la réponse acceptée afin que je puisse obtenir de l'aide de plus de personnes. Je m'excuse pour cela.