home_page.activityOnAgenda().then(function (items) { var len = items.length; for ( i = 0; i<=12;i++ ) { browser.element(by.xpath("//virtual-list/div/div["+len+"]")).click(); browser.sleep(3000); var flag = false; home_page.activity("My Scrolling").isPresent().then( function (value) { if(value===true){ break;} }) browser.element(by.xpath("//virtual-list/div/div["+len+"]")).click(); }) I am not able to use break statement inside promise. If i use break statement outside promise then it doesn't execute if block which is outside for loop
3 Réponses :
Vous ne pouvez pas casser la boucle comme celle-ci, car le rapport aussi, je ne sais pas ce que le navigateur alors code> est
async / attendre code>:
< / Code> Objet est, mais je parie que c'est code> la méthode code> est également asynchronisé et besoin
attendre code>: p>
Utilisez Si vous ne pouvez pas utiliser cette syntaxe, utilisez l'utilisation un transpilateur ou aller pour une approche récursive qui fonctionne jusqu'à ce qu'il trouve l'élément. P> p> async code> /
attendre code> pour utiliser des boucles séquentielles autour des promesses:
Cela se produit car les fonctions peuvent casser des boucles qui sont dans la fonction et non en dehors de la fonction. p>
L'instruction alors code> exécute la fonction lorsque la promesse est résolue.
Voici un exemple. for (i = 0; i !== 10; i++) {
console.log(i)
let resolved = await Promise.resolve(1)
if (resolved === 1) break;
}
Essayez d'utiliser
retour code>
cela ne fonctionnera pas non plus car il fonctionne de manière synchrone là où la boucle pour la boucle n'attendra pas la promesse de remplir
@priya Faites votre
i code> supérieure à 12 à l'intérieur de l'IF en tant que
i = 13 code>. de sorte que la boucle se termine. Je ne sais pas si c'est la bonne façon.