selenium-webdriver
Schakelen tussen frames
Zoeken…
Syntaxis
- Java
- driver.switchTo (). frame (tekenreeksnaam);
- driver.switchTo (). frame (tekenreeks-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 (string 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 (). gestel (nameOrId)
- driver.switchTo (). gestel (index)
- driver.switchTo () defaultContent. ()
parameters
parameter | gegevens |
---|---|
nameOrId | Selecteer een frame met de naam van het ID. |
inhoudsopgave | Selecteer een frame op basis van de op nul gebaseerde index. |
frameElement | Selecteer een frame met behulp van het eerder geplaatste WebElement |
Overschakelen naar een frame met Java
Als de HTML-broncode van een HTML-weergave of -element bijvoorbeeld is ingepakt door een iframe zoals deze:
<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 />
... om vervolgens enige actie op de web-elementen van het iframe uit te voeren, moet u eerst de focus naar het iframe schakelen, met behulp van een van de volgende methoden:
Frame-ID gebruiken (mag alleen worden gebruikt als u de id van het iframe kent).
driver.switchTo().frame("imgboxId"); //imgboxId - Id of the frame
Framenaam gebruiken (mag alleen worden gebruikt als u de naam van het iframe kent).
driver.switchTo().frame("imgboxName"); //imgboxName - Name of the frame
Frame-index gebruiken (mag alleen worden gebruikt als u niet de id of naam van het iframe heeft), waarbij de index de positie van het iframe tussen alle frames definieert.
driver.switchTo().frame(0); //0 - Index of the frame
Opmerking: als u drie frames op de pagina hebt, bevindt het eerste frame zich op index 0, het tweede op index 1 en het derde op index 2.
Gebruik van eerder geplaatst webelement (mag alleen worden gebruikt als u het frame al hebt gevonden en als WebElement
hebt geretourneerd).
driver.switchTo().frame(frameElement); //frameElement - webelement that is the frame
Dus, om op het Red Ball
anker te klikken:
driver.switchTo().frame("imgboxId");
driver.findElement(By.linkText("Red Ball")).Click();
Met Java uit beeld komen
Om de focus naar het hoofddocument of het eerste frame van de pagina te schakelen. U moet de onderstaande syntaxis gebruiken.
driver.switchTo().defaultContent();
Schakel naar een frame met C #
1. Schakel over naar een frame met Index.
Hier schakelen we over naar index 1. Index verwijst naar de volgorde van de frames op de pagina. Dit moet als laatste redmiddel worden gebruikt, omdat frame-ID of namen veel betrouwbaarder zijn.
driver.SwitchTo().Frame(1);
2. Schakel naar een frame op naam
driver.SwitchTo().Frame("Name_Of_Frame");
3. Schakel naar een frame op titel, ID of anderen door IWebElement te passeren
Als u op id of titel naar een frame wilt overschakelen, moet u een webelement als parameter doorgeven:
driver.SwitchTo().Frame(driver.FindElement(By.Id("ID_OF_FRAME")));
driver.SwitchTo().Frame(driver.FindElement(By.CssSelector("iframe[title='Title_of_Frame']")));
Houd er ook rekening mee dat als je een paar seconden nodig hebt om omhoog te komen, je misschien even moet wachten :
new WebDriverWait(driver, TimeSpan.FromSeconds(10))
.Until(ExpectedConditions.ElementIsVisible(By.Id("Id_Of_Frame")));
Ga uit een frame:
driver.SwitchTo().DefaultContent()
Om uit een frame te komen met C #
Om de focus naar het hoofddocument of het eerste frame van de pagina te schakelen. U moet de onderstaande syntaxis gebruiken.
. WebDriver.SwitchTo () DefaultContent ();
Schakel tussen kindkaders van een ouderframe.
Overweeg dat u een ouderframe (frame-ouder) hebt. en 2 onderliggende frames (Frame_Son, Frame_Daughter). Laten we verschillende voorwaarden bekijken en weten hoe we ermee moeten omgaan.
1. van ouder op zoon of dochter:
driver.switchTo().frame("Frame_Son");
driver.switchTo().frame("Frame_Daughter");
2. Van zoon naar ouder: als bovenliggend standaardframe is, schakelt u over naar standaardframe, anders van standaardframe-overschakeling naar bovenliggend frame. Maar u kunt niet rechtstreeks overschakelen van zoon naar ouder.
driver.switchTo().defaultContent();
driver.switchTo().frame("Frame_Parent");
3. Van zoon tot dochter: als je zus een fout maakt, schreeuw dan niet naar haar, neem gewoon contact op met je ouder. Op dezelfde manier geef je controle over het ouderframe en vervolgens over het dochterframe.
driver.switchTo().defaultContent();
driver.switchTo().frame("Frame_Parent");
driver.switchTo().frame("Frame_Daughter");
Wacht tot je frames zijn geladen
In heel wat gevallen wordt uw frame mogelijk niet meteen weergegeven en moet u waarschijnlijk wachten tot het is geladen om te schakelen. Of anders heb je NoSuchFrameException.
Het is dus altijd een goede keuze om te wachten voordat je overschakelt. Volgen is een ideale manier om te wachten tot een frame is geladen.
try{
new WebDriverWait(driver, 300).ignoring(StaleElementReferenceException.class).
ignoring(WebDriverException.class).
until(ExpectedConditions.visibilityOf((driver.findElement(By.id("cpmInteractionDivFrame"))));}
catch{
// gooit alleen uitzondering als uw frame niet zichtbaar is met in uw wachttijd 300 seconden}