Popups in Selen-Webtreibern

8

Also arbeite ich mit selen firefox webdrivers in c # winform, und ich habe diesen Code unten, um das Handle des Popups zu erhalten, das zeigt, wenn du auf den "webtraffic_popup_start_button" klickst und es sollte das Handle des Popups aber das Popup bekommen Griff ist gleich wie der aktuelle.

%Vor%

Jede Hilfe mit diesem würde sehr geschätzt werden danke

So sieht Pop-up aus.

    
Coderz 22.12.2014, 19:07
quelle

3 Antworten

20

WebDriver führt absolut keine Spurverfolgung durch, um zu erkennen, welches Fenster tatsächlich im Vordergrund des Betriebssystems ist, und schaltet nicht automatisch um, wenn neue Browserfenster geöffnet werden. Das bedeutet, dass die richtige Methode, um das Handle eines neu geöffneten Popupfensters zu erhalten, ein mehrstufiger Prozess ist. Um dies zu tun, würdest du:

  1. Speichern Sie das aktuell fokussierte Fenster-Handle in einer Variablen, damit Sie kann später wieder zurückschalten.
  2. Ruft die Liste der aktuell geöffneten Fenstergriffe ab.
  3. Führen Sie die Aktion aus, die dazu führen würde, dass das neue Fenster angezeigt wird.
  4. Warten Sie, bis sich die Anzahl der Fenstergriffe um 1 erhöht hat.
  5. Holen Sie sich die neue Liste der Fenstergriffe.
  6. Suchen Sie den neuen Punkt in der Liste der Punkte.
  7. Wechseln Sie zu diesem neuen Fenster.

In Code, der die .NET-Sprachenbindungen verwendet, sieht das etwa so aus:

%Vor%

Wenn Sie die .NET-Bindungen verwenden, gibt es alternativ eine PopupWindowFinder -Klasse in der WebDriver.Support-Assembly, die speziell für diese Operationen entwickelt wurde. Die Verwendung dieser Klasse ist viel einfacher.

%Vor%     
JimEvans 22.12.2014, 23:21
quelle
3

Wenn das zuletzt geöffnete Fenster Ihr Ziel ist, machen Sie einfach folgendes nach dem Klick

%Vor%

BEARBEITEN

%Vor%     
Saifur 22.12.2014 20:19
quelle
0

Ich habe einen Code, den du vielleicht magst. Die schnellste Lösung ist der Popup Finder, aber ich habe auch meine eigene Methode erstellt. Ich würde mich nie auf die Reihenfolge der Fenstergriffe verlassen, um das entsprechende Fenster auszuwählen. Popup-Fensterfinder:

%Vor%

Meine benutzerdefinierte Methode. Grundsätzlich übergeben Sie ihm das Element, auf das Sie klicken möchten, Ihren Webdriver und optional die Wartezeit bis zur Suche, nachdem Sie auf das Element geklickt haben.

Es nimmt all Ihre aktuellen Griffe und erstellt eine Liste. Es verwendet diese Liste, um die zuvor vorhandenen Fenster zu entfernen, aus denen versehentlich umgeschaltet wurde. Dann klickt es auf das Element, das das neue Fenster startet. Es sollte immer eine Art Verzögerung nach dem Klick geben, da nichts sofort passiert. Und dann erstellt es eine neue Liste und vergleicht diese mit der alten, bis sie ein neues Fenster findet oder die Schleife abläuft. Wenn es kein neues Fenster findet, gibt es null zurück. Wenn Sie also ein unsicheres Webelement haben, das nicht immer funktioniert, können Sie eine Nullprüfung durchführen, um festzustellen, ob der Switch funktioniert hat.

%Vor%     
Dominic Giallombardo 01.04.2016 14:17
quelle

Tags und Links