In Selenium webdriver.switchto(), "relative=top" erzeugt Fehler?
Bin ich mit Selenium WebDriver (v2.2) zu "wechseln", um die "top" - frame wie folgt:
webdriver.SwitchTo().Frame("relative=top");
Diese generiert eine Fehlermeldung:
Unable to locate frame: relative=top
Kann dadurch verursacht werden, weil die Seite, ich verwende keine frames?
BEARBEITEN
Leider beide Lösungen beinhalten Fenster Wechsel fail:
webdriver.SwitchTo().Window(winHandle);
webdriver.SwitchTo().DefaultContent();
Streng genommen, eigentlich, Sie nicht scheitern. Aber, hier ist das problem: sagen wir mal ich hol ein IWebElement innerhalb eines Rahmens. Hier ist, was der code ungefähr aussieht:
descend-into-the-frame
grab-the-element
ascend-out-of-the-frame-to-the-top
use-the-element
Wenn ich-das-element, bekomme ich ein "Element nicht im cache vorhanden sind" Ausnahme. Dies ist, weil die ascend-out-of-the-Rahmen-auf-die-Spitze schaltet sich das Fenster, welches den cache löscht. Ziemlich ärgerlich. Ich habe herausgefunden, ein workaround, aber:
ascend-out-of-the-frame-to-the-top
descend-into-the-frame
grab-the-element
use-the-element
Dies immer noch bedeutet, ich muss aufpassen, element-nicht-in-die-cache Situationen. Aber mindestens so lange, wie ich ein element verwenden, sofort nach Holen, ich bin ok.
Danke für die Hilfe an alle!
InformationsquelleAutor Stephen Gross | 2011-12-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nehme an, Sie Selenium IDE gab Sie, dass der code beim Wechsel von einem frame zum anderen. Was ich habe ist das speichern der Fenster-handle des übergeordneten Fensters, so dass Sie zurückkehren können, um es später.
Die switchTo().frame () - Methode wird die direkte Zukunft-Befehle auf dem ausgewählten Bild. Das bedeutet, müssen Sie "Fokus" auf die ausgewählten/aktuellen frame, um die Elemente im Rahmen.
Warum ist es notwendig Fahrer.switchTo().Fenster(whandle); vor dem Wechsel auf Puls a? Ich denke, da ist es im original-Fenster die code-Treiber.switchTo().Fenster(whandle); redundant ist vor dem Fahrer.switchTo().Rahmen("Puls a");
Das ist die Einschränkung von WebDriver. Die Selen-Schnittstelle hat das selectFrame () - Methode, um Ihnen zu erlauben, wählen Sie den oberen Rahmen mit "relative=top", wie der locator. Aber Sie können nicht das gleiche tun mit webDriver.
InformationsquelleAutor Joseph Hui
Wechseln top-frame aus einem anderen frame, den Sie verwenden können :
InformationsquelleAutor Surya
Ja. Sollten Sie nur SwitchTo().Rahmen (), wenn der Rahmen vorhanden ist.
Können Sie bekommen, um dieses mit den folgenden:
Ich sehe nicht, warum nicht, wenn der code ist auf der Suche nach einem zusätzlichen Rahmen und ignoriert den aktuellen frame, dann wird es nie erfahren relative=top
Dies ist noch nicht für mich arbeiten. Ich habe erfolgreich Durchlaufen in ein frame, aber der switchto().Rahmen("relative=oben") - Mechanismus noch die Ausnahme ausgelöst.
InformationsquelleAutor danludwig