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}



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow