Szukaj…


Składnia

  • Jawa
  • driver.switchTo (). frame (nazwa ciągu);
  • driver.switchTo (). frame (String id);
  • driver.switchTo (). frame (int index);
  • driver.switchTo (). frame (WebElement frameElement);
  • driver.switchTo (). defaultContent ();
  • DO#
  • driver.SwitchTo (). Frame (int frameIndex);
  • driver.SwitchTo (). Frame (IWebElement frameElement);
  • driver.SwitchTo (). Frame (ciąg frameName);
  • driver.SwitchTo (). DefaultContent ();
  • Pyton
  • driver.switch_to_frame (nameOrId)
  • driver.switch_to.frame (nameOrId)
  • driver.switch_to_frame (indeks)
  • driver.switch_to.frame (indeks)
  • 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 ()

Parametry

parametr Detale
nameOrId Wybierz ramkę według nazwy id.
indeks Wybierz ramkę według indeksu zerowego.
frameElement Wybierz ramkę, używając wcześniej umieszczonego elementu WebElement

Aby przełączyć na ramkę za pomocą Java

Na przykład, jeśli kod źródłowy HTML widoku lub elementu HTML jest zawinięty przez taki element iframe:

<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 />

... a następnie, aby wykonać dowolną akcję na elementach WWW ramki iframe, musisz najpierw przełączyć fokus na ramkę iframe, używając jednej z poniższych metod:

Korzystanie z identyfikatora ramki (powinno być używane tylko, jeśli znasz identyfikator iframe).

driver.switchTo().frame("imgboxId"); //imgboxId - Id of the frame

Używanie nazwy ramki (powinno być używane tylko, jeśli znasz nazwę ramki iframe).

driver.switchTo().frame("imgboxName"); //imgboxName - Name of the frame

Korzystanie z indeksu ramek (powinno być używane tylko wtedy, gdy nie masz identyfikatora lub nazwy iframe), gdzie indeks określa pozycję iframe między wszystkimi ramkami.

driver.switchTo().frame(0); //0 - Index of the frame

Uwaga: jeśli na stronie znajdują się trzy ramki, pierwsza ramka będzie miała indeks 0, druga indeks 1, a trzecia indeks 2.

Korzystanie z poprzednio zlokalizowanego elementu webelement (należy go używać tylko wtedy, gdy ramka została już zlokalizowana i zwrócona jako element WebElement ).

driver.switchTo().frame(frameElement); //frameElement - webelement that is the frame

Aby kliknąć kotwicę Red Ball :

driver.switchTo().frame("imgboxId");
driver.findElement(By.linkText("Red Ball")).Click();

Aby wyjść z ramki za pomocą Java

Aby przełączyć fokus na główny dokument lub pierwszą ramkę strony. Musisz użyć poniższej składni.

driver.switchTo().defaultContent();

Przełącz na ramkę za pomocą C #

1. Przełącz na ramkę według indeksu.

Przechodzimy do indeksu 1. Indeks odnosi się do kolejności ramek na stronie. Powinno to być stosowane w ostateczności, ponieważ identyfikator ramki lub nazwy są znacznie bardziej niezawodne.

driver.SwitchTo().Frame(1);

2. Przełącz na ramkę według nazwy

driver.SwitchTo().Frame("Name_Of_Frame");

3. Przełącz się do ramki według tytułu, identyfikatora lub innych, przekazując IWebElement

Jeśli chcesz przejść do ramki według identyfikatora lub tytułu, musisz podać element web jako parametr:

driver.SwitchTo().Frame(driver.FindElement(By.Id("ID_OF_FRAME")));
driver.SwitchTo().Frame(driver.FindElement(By.CssSelector("iframe[title='Title_of_Frame']")));

Pamiętaj też, że jeśli twoja ramka pojawia się kilka sekund, być może będziesz musiał skorzystać z oczekiwania :

new WebDriverWait(driver, TimeSpan.FromSeconds(10))
    .Until(ExpectedConditions.ElementIsVisible(By.Id("Id_Of_Frame")));

Wyjdź z ramy:

driver.SwitchTo().DefaultContent()

Aby wyjść z ramki za pomocą C #

Aby przełączyć fokus na główny dokument lub pierwszą ramkę strony. Musisz użyć poniższej składni.

webDriver.SwitchTo (). DefaultContent ();

Przełączaj między ramkami podrzędnymi ramki nadrzędnej.

Rozważ, że masz ramkę nadrzędną (Frame-Parent). i 2 ramki potomne (Frame_Son, Frame_Daughter). Pozwala zobaczyć różne warunki i sposób obsługi.

1. od rodzica do syna lub córki:

 driver.switchTo().frame("Frame_Son");
 driver.switchTo().frame("Frame_Daughter");

2. Od syna do rodzica: Jeśli rodzic jest domyślną ramką, przełącz na domyślną ramkę, w przeciwnym razie przełącz z domyślnej ramki na ramkę nadrzędną. Ale nie możesz przejść bezpośrednio z syna na rodzica.

driver.switchTo().defaultContent(); 
driver.switchTo().frame("Frame_Parent");

3. Od syna do córki: Jeśli twoja siostra popełni jakiś błąd, nie krzycz na nią, po prostu skontaktuj się z rodzicem. Podobnie, dajesz kontrolę ramce nadrzędnej, a następnie ramce pochodnej.

driver.switchTo().defaultContent(); 
driver.switchTo().frame("Frame_Parent");
driver.switchTo().frame("Frame_Daughter");

Poczekaj na załadowanie ramek

W wielu przypadkach twoja ramka może nie pojawić się natychmiast i prawdopodobnie musisz poczekać, aż zostanie załadowana, aby się przełączyć. W przeciwnym razie będziesz mieć NoSuchFrameException.

Dlatego zawsze dobrym wyborem jest czekać przed zmianą. Poniżej przedstawiono idealny sposób oczekiwania na załadowanie ramki.

try{
        new WebDriverWait(driver, 300).ignoring(StaleElementReferenceException.class).
                        ignoring(WebDriverException.class).
                        until(ExpectedConditions.visibilityOf((driver.findElement(By.id("cpmInteractionDivFrame"))));}
    catch{

// zgłasza wyjątek tylko wtedy, gdy ramka nie jest widoczna w czasie oczekiwania 300 sekund}



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow