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 quei = 13 code>. de sorte que la boucle se termine. Je ne sais pas si c'est la bonne façon.