1

Ich habe einen Test in Nightwatch für eine Funktion, die Sie Ihren Standort freigeben müssen, um einige Ergebnisse anzuzeigen. Jedes Mal, wenn ich mit dieser Schaltfläche interagiere, erscheint das geoiplocation-Standard-Popup des Browsers und ich muss mit ihm interagieren (akzeptieren oder ablehnen), um mit dem Test fortzufahren.Verwenden Sie Window_handles, um auf die Schaltfläche im Standort-Popup zu klicken, mit Nightwatch

Um dies zu tun, habe ich versucht acceptAlert in der Nightwatch API Dokumentation erwähnt, ohne Erfolg. Ich las an mehreren Stellen, die in diesem Fall, dass Sie den Befehl an das neue Fenster wechseln können, wie here:

browser.window_handles(function(result) { 
    var handle = result.value[0]; 
    browser.switchWindow(handle); 
}); 

Mein Problem ist, wie kann ich diese Taste Sie klicken, wenn ich kann nicht Quelle dieser Pop ansehen -up, um den HTML-Code dafür zu bekommen? Oder gibt es eine andere Möglichkeit, die ich ablehnen kann?

Antwort

0

Also, am Ende, habe ich diese Antwort von github, die besagt, dass Sie das nicht tun können, aber Sie können Ihren Browser einstellen, um keine Genehmigung mehr zu verlangen. nicht sehr befriedigend, aber ... du gehst, ein Workaround.

0

Sie können diese Syntax versuchen. Es arbeiten kann:

browser.window_handles(function(result) { 
    var handle = result.value[0]; 
    this.switchWindow(handle); 
    this.useXpath(); or this.useCss() 
    this.click("locator path") 
}); 
+0

der Locator-Pfad bedeutet .. irgendein Element Pfad mit dem Pop-up? Ich fürchte, das ist genau das Problem, dass, wenn ich mit der rechten Maustaste darauf klicke, nichts passiert, ich kann den HTML-Code des Pop-ups nirgends sehen, daher kann ich den Xpath- oder CSS-Selektor nicht verwenden. – anasarbescu

0

dieses Versuchen

browser 
      .click('@buttonPopup') 
      .acceptAlert(); 

Falls Sie eine Seite-Objekt verwenden, wäre es:

pageObject.click('@buttonPopup',function(){ 
       browser.acceptAlert();   
     }) 

window_handles Methode 'Reiter' stattdessen behandeln Pop-up.

PS: Denken Sie daran, Phantomjs wird nicht arbeiten mit acceptAlert/dismitAlert das Pop-up.