selenium-webdriver
Frames wechseln
Suche…
Syntax
- Java
- driver.switchTo (). frame (Stringname);
- driver.switchTo (). frame (String-ID);
- driver.switchTo (). frame (int index);
- driver.switchTo (). frame (WebElement frameElement);
- driver.switchTo (). defaultContent ();
- C #
- driver.SwitchTo (). Frame (int frameIndex);
- driver.SwitchTo (). Frame (IWebElement frameElement);
- driver.SwitchTo (). Frame (Zeichenfolge frameName);
- driver.SwitchTo (). DefaultContent ();
- Python
- driver.switch_to_frame (nameOrId)
- driver.switch_to.frame (nameOrId)
- driver.switch_to_frame (index)
- driver.switch_to.frame (Index)
- driver.switch_to_frame (frameElement)
- driver.switch_to.frame (frameElement)
- driver.switch_to_default_content ()
- driver.switch_to.default_content ()
- JavaScript
- driver.switchTo (). frame (nameOrId)
- driver.switchTo (). Frame (Index)
- driver.switchTo (). defaultContent ()
Parameter
Parameter | Einzelheiten |
---|---|
nameOrId | Wählen Sie einen Rahmen anhand des Namens der ID aus. |
Index | Wählen Sie einen Frame anhand seines nullbasierten Index aus. |
frameElement | Wählen Sie einen Frame mit dem zuvor lokalisierten WebElement aus |
So wechseln Sie mit Java zu einem Frame
Für eine Instanz, wenn der HTML-Quellcode einer HTML-Ansicht oder eines HTML-Elements von einem iframe wie folgt umschlossen wird:
<iframe src="../images/eightball.gif" name="imgboxName" id="imgboxId">
<p>iframes example</p>
<a href="../images/redball.gif" target="imgbox">Red Ball</a>
</iframe><br />
Um eine Aktion an den Web-Elementen des Iframes auszuführen, müssen Sie zunächst den Fokus auf den Iframe setzen, indem Sie eine der folgenden Methoden verwenden:
Frame- ID verwenden (sollte nur verwendet werden, wenn Sie die ID des Iframes kennen).
driver.switchTo().frame("imgboxId"); //imgboxId - Id of the frame
Frame-Name verwenden (sollte nur verwendet werden, wenn Sie den Namen des Iframes kennen).
driver.switchTo().frame("imgboxName"); //imgboxName - Name of the frame
Frame-Index verwenden (sollte nur verwendet werden, wenn Sie nicht über die ID oder den Namen des Iframes verfügen), wobei der Index die Position des Iframes unter allen Frames definiert.
driver.switchTo().frame(0); //0 - Index of the frame
Hinweis: Wenn Sie drei Frames auf der Seite haben, befindet sich der erste Frame im Index 0, der zweite im Index 1 und der dritte im Index 2.
Verwendung von zuvor lokalisiertem Webelement (sollte nur verwendet werden, wenn Sie den Frame bereits gefunden und als WebElement
).
driver.switchTo().frame(frameElement); //frameElement - webelement that is the frame
Also, um auf den Red Ball
zu klicken:
driver.switchTo().frame("imgboxId");
driver.findElement(By.linkText("Red Ball")).Click();
Um mit Java aus einem Frame herauszukommen
So wechseln Sie den Fokus auf das Hauptdokument oder den ersten Frame der Seite. Sie müssen die folgende Syntax verwenden.
driver.switchTo().defaultContent();
Mit C # zu einem Frame wechseln
1. Wechseln Sie zu einem Frame nach Index.
Hier wechseln wir zu Index 1. Index bezieht sich auf die Reihenfolge der Frames auf der Seite. Dies sollte als letzter Ausweg verwendet werden, da Frame-ID oder -Namen viel zuverlässiger sind.
driver.SwitchTo().Frame(1);
2. Wechseln Sie zu einem Frame nach Name
driver.SwitchTo().Frame("Name_Of_Frame");
3. Wechseln Sie zu einem Frame nach Titel, Id oder anderen, indem Sie IWebElement übergeben
Wenn Sie nach ID oder Titel zu einem Frame wechseln möchten, müssen Sie ein Webelement als Parameter übergeben:
driver.SwitchTo().Frame(driver.FindElement(By.Id("ID_OF_FRAME")));
driver.SwitchTo().Frame(driver.FindElement(By.CssSelector("iframe[title='Title_of_Frame']")));
Beachten Sie auch, dass Sie einige Sekunden warten müssen, wenn Ihr Bild einige Sekunden dauert.
new WebDriverWait(driver, TimeSpan.FromSeconds(10))
.Until(ExpectedConditions.ElementIsVisible(By.Id("Id_Of_Frame")));
Raus aus einem Rahmen:
driver.SwitchTo().DefaultContent()
So verlassen Sie einen Frame mit C #
So wechseln Sie den Fokus auf das Hauptdokument oder den ersten Frame der Seite. Sie müssen die folgende Syntax verwenden.
webDriver.SwitchTo (). DefaultContent ();
Wechseln zwischen untergeordneten Frames eines übergeordneten Frames.
Stellen Sie sich vor, Sie haben einen übergeordneten Frame (Frame-Parent). und 2 untergeordnete Frames (Frame_Son, Frame_Daughter). Schauen wir uns verschiedene Bedingungen an und wie man damit umgeht.
1. Vom Elternteil zum Sohn oder zur Tochter:
driver.switchTo().frame("Frame_Son");
driver.switchTo().frame("Frame_Daughter");
2.Von Sohn zu übergeordnetem Element: Wenn das übergeordnete Bild das Standardbild ist, wechseln Sie zum Standardbild, ansonsten wechseln Sie vom Standardbild zum übergeordneten Bild. Sie können jedoch nicht direkt vom Sohn zum Elternteil wechseln.
driver.switchTo().defaultContent();
driver.switchTo().frame("Frame_Parent");
3.Von Sohn zu Tochter: Wenn Ihre Schwester einen Fehler macht, schreien Sie sie nicht an, erreichen Sie einfach Ihre Eltern. In ähnlicher Weise geben Sie die Kontrolle an den übergeordneten Frame und dann an den Tochterframe.
driver.switchTo().defaultContent();
driver.switchTo().frame("Frame_Parent");
driver.switchTo().frame("Frame_Daughter");
Warten Sie, bis Ihre Bilder geladen sind
In einigen Fällen wird Ihr Frame möglicherweise nicht sofort angezeigt und Sie müssen wahrscheinlich warten, bis der Frame geladen ist, um zu wechseln. Andernfalls haben Sie NoSuchFrameException.
Daher ist es immer eine gute Wahl, um zu warten, bevor Sie wechseln. Im Folgenden finden Sie eine ideale Methode, um zu warten, bis ein Frame geladen ist.
try{
new WebDriverWait(driver, 300).ignoring(StaleElementReferenceException.class).
ignoring(WebDriverException.class).
until(ExpectedConditions.visibilityOf((driver.findElement(By.id("cpmInteractionDivFrame"))));}
catch{
// löst nur dann eine Ausnahme aus, wenn Ihr Frame in Ihrer Wartezeit 300 Sekunden nicht sichtbar ist}