Ich habe eine Situation, wenn durch Klicken auf die Schaltfläche das neue Browserfenster mit Suchergebnissen geöffnet wird.
Gibt es eine Möglichkeit, eine Verbindung herzustellen und sich auf ein neu geöffnetes Browserfenster zu konzentrieren?
Und arbeiten Sie damit, und kehren Sie dann zum ursprünglichen (ersten) Fenster zurück.
java
selenium
selenium-webdriver
webdriver
new-window
Volodymyr Prysiazhniuk
quelle
quelle
Antworten:
Sie können wie folgt zwischen den Fenstern wechseln:
quelle
getWindowHandles()
ein Set zurückgegeben wird und ein Set die Bestellung nicht garantiert . Das letzte Element ist nicht immer das letzte Fenster. Ich bin überrascht, dass sein Kommentar viele positive Stimmen erhält.getWindowHandles()
. Es ist ein bekanntes Verhalten (kein Fehler) der Methode und insbesondere des Java-Sets <T>. DaherswitchTo().window(handles[handles.length-1])
ist in Java nicht garantiert. Es kann nicht behauptet werden, dass die AC # -Lösung korrekt ist.Nur um den Inhalt zu ergänzen ...
Zurück zum Hauptfenster (Standardfenster).
verwenden
driver.switchTo().defaultContent();
quelle
Dieses Skript hilft Ihnen , von einem wechseln Elternfenster zu einem Kind Fenster und zurück cntrl Übergeordnetes Fenster
quelle
Surya, dein Weg wird aus zwei Gründen nicht funktionieren:
quelle
Ändern Sie die Registrierung für IE:
Quelle: Problem beim Umschalten von Selenium WebDriver-Fenstern in Internet Explorer 8-10
In meinem Fall hat der IE nach der Bearbeitung der Registrierung begonnen, neue Fensterhandles zu erkennen.
Entnommen aus dem MSDN-Blog:
Internet Optionen:
Code:
Der obige Code enthält eine If-Prüfung, um sicherzustellen, dass Sie nicht zum übergeordneten Fenster wechseln, da
Set<T>
in Java keine garantierte Reihenfolge besteht .WebDriverWait
scheint die Erfolgschance zu erhöhen, wie durch die folgende Aussage gestützt.Zitat aus Luke Inman-Semerau : (Entwickler für Selen)
Zusammenhängende Posts:
quelle
Du könntest benutzen:
Wobei WindowName eine Zeichenfolge ist, die den Namen des Fensters darstellt, auf das Sie den Fokus wechseln möchten. Rufen Sie diese Funktion erneut mit dem Namen des ursprünglichen Fensters auf, um darauf zurückzugreifen, wenn Sie fertig sind.
quelle
Ich benutze Iterator und eine while-Schleife, um die verschiedenen Fenstergriffe zu speichern und dann hin und her zu wechseln.
quelle
quelle
Das Problem bei vielen dieser Lösungen ist also, dass Sie davon ausgehen, dass das Fenster sofort angezeigt wird (nichts passiert sofort und die Dinge passieren im IE deutlich weniger sofort). Außerdem gehen Sie davon aus, dass vor dem Klicken auf das Element nur ein Fenster angezeigt wird, was nicht immer der Fall ist. Außerdem gibt der IE die Fensterhandles nicht in einer vorhersehbaren Reihenfolge zurück. Also würde ich folgendes tun.
quelle
Wenn Sie mehr als einen Browser haben (mit Java 8)
quelle