Ich bin neu auf Winkelmesser, Javascript und Async-Programmierung im Allgemeinen. Ich habe Probleme mit dem Beenden von geschachtelten for-Schleifen, nachdem ich festgestellt habe, dass ein bestimmtes Element auf der Seite seine Klasse geändert hat.Winkelmesser - verschachtelt für Schleife, wenn element.getAttribute ('Klasse') ändert
Leider habe ich ein Flash-Objekt auf der Seite, die ich automatisiere, dass ich interagieren muss. Ich benutze dazu direkt mouseMoves und clicks, was meiner Meinung nach zufriedenstellend ist. Ich möchte in ein 10x10-Raster klicken, bis ich auf etwas im Raster klicke, das die Klasse eines anderen Elements auf der Seite ändert. Hier ist mein Code:
var selectSeat = function() {
var xCoord = 157;
var yCoord = 57;
var breakLoop = false;
for (var i=0; i<10; i++) {
for (var j=0; j<10; j++) {
browser.actions().mouseMove(flashElement, {x: xCoord+(15*i), y: yCoord+(15*j)}).click().perform();
browser.sleep(500);
buttonElement.getAttribute('class').then(function(attribute) {
if(attribute === 'black-button') {
breakLoop = true;
}
})
if (breakLoop) {
return;
}
}
}
};
ich die Werte des Attributs und breakLoop an die Konsole angemeldet habe, um sicherzustellen, dass sie wie erwartet ändern sie, und sie sind. Das Problem kommt von dem 'if (breakLoop) {return; } 'blockiert nicht, auch wenn breakLoop wahr ist. Ich weiß, dass dies Probleme aufgrund der asynchronen Natur des Winkelmessers hat, aber nach stundenlangem Suchen und Versuchen von Lösungen kann ich nicht herausfinden, was meine richtige Lösung ist.
Wie ich schon sagte, ich bin ein Anfänger, so dass ich nicht wirklich verstehen, was die Callback-Funktion tut. Wie verlässt es die Schleife? Ich habe versucht, mit Ihrem Beispiel und eine Funktion übergeben, die einfach zurückgibt und das hat nicht funktioniert. Ich brauche nur mehr Erklärungen darüber, was dein Beispiel macht, und ich bin mir sicher, dass ich es herausfinden kann. – jamacdonald