Suchen Sie nach Hilfe, wie ich ein neues "Pop-up" -Fenster erhalten soll, das nach dem Klicken auf einen "Login" -Button angezeigt wird.Wechseln in ein neues Fenster mit Selenium/Protractor Javascript
Ich bin in der Lage, zu bekommen, wenn das Fenster angezeigt wird, aber ich glaube nicht, dass der Code, den ich derzeit verwende, um das Fenster "Handle" greifen funktioniert ordnungsgemäß. Meine Situation ist etwas anders, da ich einen Winkelmesser in meinen Seiten verwende, aber das neue Fenster ist NICHT winkelbasiert, also muss ich auf Selenium WebDriver umschalten, während ich in diesem Fenster bin. (Jemand hat eine Idee, wenn es Probleme mit diesem Ansatz geben könnte?)
Unten finden Sie das Code-Snippet, das ich benutze, um den Selen-Treiber zu erstellen, sowie darunter, die versuchen, "/ handle" zu wechseln des neuen Fensters, das auftaucht. Ich weiß, dass es nicht richtig funktioniert, weil ich im folgenden Code immer wieder "No So Solem" -Fehler erhalte, wenn ich versuche, ein Formular auf der Seite zu finden.
// Create selenium webdriver/driver
var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).
build();
// Now make sure that the new window is popping up and we are navigating correctly to it
var handlePromise = browser.driver.getAllWindowHandles();
handlePromise.then(function (handles) {
// parentHandle = handles[0];
var popUpHandle = handles[1];
// Change to new handle
browser.driver.switchTo().window(popUpHandle);
var popUpHandleFinal = browser.driver.getWindowHandle();
expect(popUpHandleFinal).toEqual(popUpHandle);
});
Paar Dinge dazu:
Wenn ich den "Browser" in der Zeile "browser.driver.switchTo() Fenster (popUpHandle)" entfernen, damit es als „Treiber liest. switchTo(). window (popUpHandle) "Ich erhalte zurück und Fehler, der liest wie" UnknownError: unbekannter Fehler: 'Name' muss eine nichtleere Zeichenfolge sein "Nach einigen Suchvorgang ist dies, weil die" switchTo() "-Methode auf Treiber kann nicht Null sein. Dieser Fehler ist behoben, wenn ich nur den oben gezeigten Code verwende.
Ich bin nicht 100% sicher, ob ich Winkelmesser (globale "Browser" var) verwenden oder den geraden "Treiber" (Selenium) verwenden soll, den ich vorher als den Weg einstelle, um die Fenster zu bekommen.
Vielen Dank für Ihre Hilfe
Kann sein, etw verwandten los: http://stackoverflow.com/questions/28511013/non-angular-page- nach einem Klick geöffnet. – alecxe
Wenn Sie sich bereits im Kontext eines funktionierenden Winkelmessertreibers befinden, müssen Sie intern keine separate webdriver-Instanz starten. (Das wird den Browser wahrscheinlich verwirren, um zwei Fernsteuerungen zu haben). Der Winkelmesser macht den rohen Webdriver über 'browser.driver' verfügbar, so dass er korrekt verwendet werden sollte. –
Das war mein Hauptproblem. Vielen Dank. Nachdem ich den anderen Treiber eingestellt hatte, ging ich nach einigen Iterationen wieder zur Verwendung von browser.driver über. – parchambeau