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 Réponses :
Faites attention à ceci:
async getTheValueOfEntery(entery:string){ return (await element(by.xpath(entery))).isPresent(); }
Votre exemple final est en attente de ispresent code> 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!
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;
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é. Code> Où devrait-il être le cas dans le code de l'OP? Le
attendre code> pour le retour de la promesse par l'expression chaînée (donc celui-ci renvoyé par le dernier
.Chen code>)
Vous ne retournez rien de votre fonction de flèche, de sorte que la resul de ce soit alors c'est comme si vous écrivez: p> vous devez donc ajouter un ou supprimer le et si vous Ne faites rien avec la variable code> la valeur code> sauf de le renvoyer, vous n'avez pas besoin d'utiliser le non défini code>. Si vous écrivez:
retour < / code>: p>
{} code>: p>
attendre code>. Vous pouvez simplement écrire: p>
async code> serait alors en théorie non requis, mais cela ne nuit pas et il montrera que cette fonction va retournez toujours une promesse. P> p>
@KamyarParasesh Votre question originale est sur async / attendre est toujours renvoyée indéfini code> 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.
Pourquoi faites-vous
.Chen ((isexist) => {isexist;}); code> du tout, qu'essayez-vous de réaliser avec cela? Évitez
attendre code> ing A
!.Chen (...) code> 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; code>.
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.