2016-06-30 9 views
0

Ich muss prüfen, ob ein Pop-up existiert (das in einem iframe öffnet), dann werde ich ein Stück Code ausführen (wechseln Sie zu diesem Rahmen, geben Sie einige Daten ein, klicken Sie auf Weiter Taste). Während ich nach einer Lösung suchte, fand ich this question das ist 90% das gleiche wie meins, außer es validiert die Existenz eines bestimmten Elements. In meinem Fall kann ich das Element nicht überprüfen, bis ich zu dem neuen Rahmen umschalte.Ermitteln, ob Rahmen als Bedingung in Nightwatch

Also statt document.getElementById sollte ich etwas ähnliches für Frames finden. Gibt es so etwas, das ich in Nightwatch verwenden kann?

var popup = browser.getElementById("myFrameId"); 
if (popup!= null){ 
     //chunck of code 
    } 

Ich habe auch mit etwas versucht, wie in this thread erwähnt, aber ohne successs, so scheint es mir nicht um den Rahmen-ID zu einem dieser Funktionen passieren kann:

var popup =0; 
do { 
    popup =0; 
    klarnaForm.waitForElementVisible('iframe #klarna-fullscreen-iframe',5,false,function (result) { 
      if(result.value) { 
       changeFrame('pop-up'); 
       changeFrame('klarna'); 
       klarnaForm.continueKlarna(); 
       popup = 1; 
       } 
     }); 
} while (popup); 

Antwort

0

Popup-Wert zu erhalten außerhalb des Callback ist das, was Sie wollen, wenn ja, versuchen Sie diese:

var popup =0; 
    browser.waitForElementVisible('iframe #klarna-fullscreen-iframe',5,false,function (result) { 
      if(result.value) { 
       changeFrame('pop-up'); 
       changeFrame('klarna'); 
       klarnaForm.continueKlarna(); 
       popup = 1; 
       } 
     }) 
     .perform(function(browser,done){ 
      console.log(popup); // popup will be 1 if the 'if statement' above was true 
      // do your chuck code here. 
      }); 

ps: zur Zeit, das api .perform doesnt Support-Seite-Objekt, das ist, warum wir bleiben müssen mit browser Objekt.

+0

Nein, ich möchte meinen Code mit dem Vorhandensein dieses Pop-ups verknüpfen können. IF und nur wenn dieses Popup vorhanden ist, führen Sie diese Aktionen aus. aber ich verstehe nicht, wie man IF in Code übersetzt. – anasarbescu

+0

Problem mit diesem Teil des Codes ist, dass waitForElementVisible scheint nicht für Frames zu arbeiten. – anasarbescu