Sök…


Syntax

  • Java
  • driver.switchTo (). ram (String name);
  • driver.switchTo (). ram (sträng-id);
  • driver.switchTo (). ram (int index);
  • driver.switchTo (). ram (WebElement frameElement);
  • . Driver.switchTo () defaultContent ();
  • C #
  • driver.SwitchTo (). Frame (int frameIndex);
  • driver.SwitchTo (). Frame (IWebElement frameElement);
  • driver.SwitchTo (). Ram (strängramnamn);
  • . Driver.SwitchTo () DefaultContent ();
  • Pytonorm
  • 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 (). ramen (nameOrId)
  • driver.switchTo (). ramen (index)
  • driver.switchTo (). defaultContent ()

parametrar

parameter detaljer
nameOrId Välj en ram med namnet på id.
index Välj en ram med dess nollbaserade index.
frameElement Välj en ram med dess tidigare lokaliserade WebElement

För att växla till en ram med Java

För en instans om html-källkoden för en html-vy eller -element är lindad av en iframe som denna:

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

... för att utföra alla åtgärder på iframes webb-element måste du först växla fokus till iframe med någon av nedanstående metoder:

Använda ram-id (ska endast användas om du känner till iframes-id).

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

Använda ramnamn (ska endast användas om du vet namnet på iframe).

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

Använda ramindex (bör endast användas om du inte har ID eller namn på iframe), där indexet definierar iframes position bland alla ramar.

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

Obs! Om du har tre ramar på sidan är den första ramen på index 0, den andra vid index 1 och den tredje vid index 2.

Använda tidigare lokaliserat webbelement (ska endast användas om du redan har hittat ramen och har returnerat den som en WebElement ).

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

Så för att klicka på Red Ball ankaret:

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

För att komma ur en ram med Java

För att växla fokus till antingen huvuddokument eller första bildram. Du måste använda syntax nedan.

driver.switchTo().defaultContent();

Byt till en ram med C #

1. Växla till en ram efter index.

Här växlar vi till index 1. Index hänvisar till bildrutans ordning på sidan. Detta bör användas som en sista utväg, eftersom ram-ID eller namn är mycket mer pålitliga.

driver.SwitchTo().Frame(1);

2. Byt till en ram efter namn

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

3. Växla till en ram efter titel, id eller andra genom att passera IWebElement

Om du vill byta till en ram efter id eller titel måste du lämna in ett webbelement som parameter:

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

Observera också att om din ram tar några sekunder att komma upp, kan du behöva vänta :

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

Gå ut ur en ram:

driver.SwitchTo().DefaultContent()

För att komma ut ur en ram med C #

För att växla fokus till antingen huvuddokument eller första bildram. Du måste använda syntax nedan.

. WebDriver.SwitchTo () DefaultContent ();

Växla mellan barnramar i en överordnad ram.

Tänk på att du har en överordnad ram (ram-förälder). och 2 barnramar (Frame_Son, Frame_Daughter). Låter oss se olika förhållanden och hur man hanterar.

1. Från förälder till son eller dotter:

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

2. Från Son till förälder: Om förälder är standardram, växla till standardram, annars från standardramväxlare till överordnad ram. Men du kan inte växla direkt från son till förälder.

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

3.Från son till dotter: Om din syster gör något misstag, skrika inte åt henne, bara räcka ut till ditt förälder. På samma sätt ger du kontroll över förälderramen och sedan till dotterramen.

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

Vänta tills dina ramar laddas

I en hel del fall kanske din ram inte dyker upp omedelbart och du måste förmodligen vänta tills den laddas för att växla. Eller annars kommer du att ha NoSuchFrameException.

Så det är alltid ett bra val att vänta innan du byter. Följande är ett idealiskt sätt att vänta tills en ram har laddats.

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

// kastar undantag endast om din ram inte är synlig med i väntetiden 300 sekunder}



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow