Ich versuche Selenid zu verwenden, um eine Aktion zu duplizieren. Die Aktion klickt auf einen Link, der ein neues Fenster öffnet. Wie lässt sich Selenid auf das neue Fenster anstatt auf das andere konzentrieren? Es hat nicht für mich funktioniert.Wie konzentrieren Sie sich auf neue Fenster mit Selenide?
Antwort
Wählen Sie Fenster
Dazu müssen Sie den selectWindow | windowName
Befehl verwenden.
Um zurück in das Hauptfenster von dem anderen Fenster gehen Sie dann selectWindow | null
Arguments: * windowID - the JavaScript window ID of the window to select Selects a popup window using a window locator; once a popup window
ausgewählt wurde, gehen alle Befehle zu das Fenster. Um wieder das Hauptfenster auszuwählen, verwenden Sie null als Ziel.
Window locators provide different ways of specifying the window object:
nach Titel, durch interne JavaScript "name" oder durch JavaScript-Variable.
* title=My Special Window: Finds the window using the text that
erscheint in der Titelleiste. Achtung; zwei Fenster können den gleichen Titel teilen. Wenn das passiert, wird dieser Locator nur einen auswählen. * name = myWindow: Findet das Fenster seiner internen JavaScript "Name" Eigenschaft. Dies ist der zweite Parameter "windowName" an die JavaScript-Methode window.open (url, windowName, windowFeatures, replaceFlag) (die Selen abfängt) übergeben. * var = Variablenname: Einige Pop-up-Fenster sind nicht namentlich (anonym), sind aber mit einem JavaScript-Variablennamen in der aktuellen Anwendungsfenster zugeordnet, zum Beispiel "window.foo = window.open (url);". In diesen Fällen können Sie das Fenster öffnen mit „var = foo“.
If no window locator prefix is provided, we'll try to guess what you
wie dies bedeutet:
1.) if windowID is null, (or the string "null") then it is assumed the
Benutzer beziehen sich auf die ursprünglichen Fenster vom Browser instanziiert).
2.) if the value of the "windowID" parameter is a JavaScript variable
Name in den aktuellen Anwendung Fenster, dann wird angenommen, dass diese variable den Rückgabewert von einem Aufruf an dem JavaScript window.open() Methode enthält.
3.) Otherwise, selenium looks in a hash it maintains that maps string
Namen zu Fenster "Namen".
4.) If that fails, we'll try looping over all of the known windows
versuchen passende "Titel" zu finden. Da „Titel“ nicht notwendigerweise eindeutig ist, kann dies unerwartetes Verhalten hat.
If you're having trouble figuring out the name of a window that you want
zu manipulieren, die Selen Log-Meldungen zu buchen, die die Namen von Fenstern über erstellt identifizieren window.open (und somit abgefangen durch Selen). Sie werden sehen, Meldungen wie für jedes Fenster die folgende, wie es geöffnet ist:
debug: window.open call intercepted; window ID (which you can
Verwendung mit selectWindow()) ist "myNewWindow"
In some cases, Selenium will be unable to intercept a call to
window.open (wenn der Anruf erfolgt während oder vor dem Ereignis "onLoad", für Beispiel). (Dies ist Bug SEL-339.) In diesen Fällen können Sie Selen zu Hinweis zwingen das offene Fenster den Namen mithilfe von die Selenium Openwindow-Befehl, mit einen leeren (leere) url, wie folgt aus: Openwindow („“ "myFunnyWindow").
selectWindow (WindowID)
selectPopup
Wenn es ein Pop-up dann selectPopUp | windowId
tun ist, und dann in das Hauptfenster zurück zu gehen tun selectWindow | null
selectPopUp(windowID)
Argumente:
- FensterID - eine Kennung für das Popup-Fenster, die verschiedene Bedeutungen annehmen kann
- Wenn windowID nicht angegeben oder als "null" angegeben ist, wird das erste nicht-oberste Fenster ausgewählt. Das obere Fenster ist dasjenige, das von selectWindow() ausgewählt würde, ohne eine windowID anzugeben. Dies sollte nicht verwendet werden, wenn mehr als ein Popup-Fenster im Spiel ist.
- Andernfalls wird das Fenster sah WindowID als um folgende Berücksichtigung up:
- der "Name" des Fensters, wie angegeben()
- A JavaScript Variable window.open die eine Referenz zu einem Fenster
- Der Titel des Fensters. Dies ist das gleiche von selectWindow ausgeführt bestellt Nachschlag
Vereinfacht den Vorgang der Auswahl eines Popup-Fensters (und bietet keine Funktionalität, die selectWindow() bereits bietet).
meldet der Fehler hier: http: // jira .openqa.org/browse/SEL-703 gilt für das, was Sie oben beschrieben haben? Ich habe jetzt stundenlang mit SelectWindow gerungen. macht mich verrückt. – the0ther
großartig !!! benutze 'selectPopup' um mein Problem zu lösen. Danke vielmals! –
Vergessen Sie auch nicht, ein'waitForPopUp' vor dem'selectPopup' zu platzieren, um sicherzustellen, dass das popUp geladen wurde, bevor Sie es auswählen. –
Sie können das Zufall Fenster ID speichern (erzeugt durch Selenium IDE) mit ‚storeAttribute‘ Befehl. Sie müssen die ID nur in einer Variablen speichern und dann das Fenster mit dem Befehl 'selectWindow' auswählen.
Versuchen Sie es mit dieser:
<tr>
<td>storeAttribute</td>
<td>link=Help [email protected]</td>
<td>window_ID</td>
</tr>
<tr>
<td>selectWindow</td>
<td>${window_ID}</td>
<td></td>
</tr>
Versuchen Sie, diese mit Selen Web Driver 2:
driver.switch_to.window(driver.window_handles.last);
Das OP fragt klar nach einer Lösung in Selenium IDE –
diese Bedenken Sie: würden Sie lieber nur das Attribut target="_blank"
entfernen? Für mich ist dies eine Lösung gewesen:
getEval
this.page().findElement('link=Facebook').removeAttribute('target');
im selben Fenster Bleiben Sie hat einige Vorteile in Selenium IDE, sieht es nicht Ziel leer unterstützt.
sieht aus wie ich dies aus Versehen ausgefallen bin - die Lösung kommt ziemlich elegant in einer Mode Wunsch Ich könnte verbessern – Alvin
Dies ist tatsächlich die schnellste und einfachste Lösung für die meisten Anwendungsfälle . Funktioniert auch auf Formularen! –
- 1. Wie können wir Selen zwingen, sich auf neue Tabs zu konzentrieren?
- 2. Konzentrieren Sie sich auf eine TextBox in einem DataTemplate
- 3. Wie kann ich eine js/Notification in ClojureScript erstellen, die sich auf das Fenster konzentrieren kann?
- 4. Konzentrieren Sie sich auf einen Rahmen in einem Canvas
- 5. Kann sich nicht auf das Textfeld konzentrieren
- 6. Konzentrieren Sie sich auf ein Nicht-Eingabe-/Ankerelement?
- 7. Wie kann man sich auf Elemente in GWT konzentrieren?
- 8. Wie konzentrieren Sie sich beim Laden der Seite mit jQuery auf ein Formulareingabe-Textfeld?
- 9. Wie auf HTML-Eingabe mit CSS konzentrieren
- 10. Wie ein Befehl in einem Bash-Skript auszuführen, und konzentrieren sich dann erscheinenden Fenster
- 11. Auf welche Dinge sollte sich ein Amateur-Programmierer konzentrieren?
- 12. Voiceover Zugänglichkeit konzentrieren sich auf eine Reihe von Elementen
- 13. Neue Seite mit Fenster drucken
- 14. UITextField können nicht bearbeitet werden, konzentrieren sich
- 15. Javascript arbeitet nicht mit Selenide und PhantomJS
- 16. Öffnen Sie das neue Finder-Fenster mit AppleScript
- 17. Holen Sie sich das letzte aktive Fenster: Holen Sie sich zuvor aktives Fenster
- 18. SSMS-Fenster mit 'Neue Abfrage' geöffnet
- 19. Android EditText - Konzentrieren Sie sich darauf und wählen Sie den gesamten Text programmgesteuert
- 20. xmonad: verschiebe neue schwebende Fenster
- 21. Wie Sie wissen, wenn sich das Fenster zorder ändert
- 22. Wie erstellt man neue PyQt4-Fenster aus einem bestehenden Fenster?
- 23. Wie verschiebe ich ein vorhandenes Fenster auf eine neue Registerkarte?
- 24. verliert in jqGrid auf Eingabefeld konzentrieren
- 25. Wie kann ich mich auf ein Auswahlfeld konzentrieren?
- 26. Holen Sie sich neue Upstream-Zweig mit Git
- 27. jQuery: Textfeld verliert auf unwrap konzentrieren()
- 28. Wie bekomme ich "Facebook Like", um sich auf Elemente auf der Seite zu konzentrieren, nicht auf die Seite selbst?
- 29. Öffnen Sie eine neue Registerkarte/Fenster und schreiben Sie etwas?
- 30. Alte Commits und neue Commits befinden sich auf separaten Repositories, wie verketten Sie sie?
überprüfen Sie diesen Link, ich auch in unten gepostet, ich bekomme das Gefühl SelectWindow ist sehr kaputt: http://jira.openqa.org/browse/SEL-703 – the0ther