selenium-webdriver
Marcos de conmutación
Buscar..
Sintaxis
- Java
- driver.switchTo (). frame (nombre de la cadena);
- 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 (string frameName);
- driver.SwitchTo (). DefaultContent ();
- Pitón
- driver.switch_to_frame (nameOrId)
- driver.switch_to.frame (nameOrId)
- driver.switch_to_frame (índice)
- driver.switch_to.frame (índice)
- 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 (índice)
- driver.switchTo (). defaultContent ()
Parámetros
parámetro | detalles |
---|---|
nameOrId | Seleccione un cuadro por su nombre de identificación. |
índice | Seleccione un cuadro por su índice de base cero. |
marco elemento | Seleccione un marco utilizando su WebElement previamente ubicado |
Para cambiar a un marco utilizando Java
Para una instancia, si el código fuente html de una vista o elemento html está envuelto por un iframe como este:
<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 />
... luego, para realizar cualquier acción en los elementos web del iframe, primero debe cambiar el enfoque al iframe, utilizando cualquiera de los siguientes métodos:
Uso de Id. De cuadro (solo debe usarse si conoce el id del iframe).
driver.switchTo().frame("imgboxId"); //imgboxId - Id of the frame
Usando el nombre del marco (debe usarse solo si conoce el nombre del iframe).
driver.switchTo().frame("imgboxName"); //imgboxName - Name of the frame
Uso del índice de cuadros (debe usarse solo si no tiene el ID o el nombre del iframe), donde el índice define la posición del iframe entre todos los cuadros.
driver.switchTo().frame(0); //0 - Index of the frame
Nota: Si tiene tres cuadros en la página, entonces el primer cuadro estará en el índice 0, el segundo en el índice 1 y el tercero en el índice 2.
Usar el elemento web ubicado anteriormente (debe usarse solo si ya ha localizado el marco y lo ha devuelto como un elemento WebElement
).
driver.switchTo().frame(frameElement); //frameElement - webelement that is the frame
Entonces, para hacer clic en el ancla de la Red Ball
:
driver.switchTo().frame("imgboxId");
driver.findElement(By.linkText("Red Ball")).Click();
Salir de un frame utilizando Java.
Para cambiar el enfoque al documento principal o al primer fotograma de la página. Tienes que usar la siguiente sintaxis.
driver.switchTo().defaultContent();
Cambia a un marco usando C #
1. Cambie a un cuadro por índice.
Aquí estamos cambiando al índice 1. El índice se refiere al orden de los marcos en la página. Esto debería usarse como último recurso, ya que la identificación del marco o los nombres son mucho más confiables.
driver.SwitchTo().Frame(1);
2. Cambiar a un cuadro por nombre
driver.SwitchTo().Frame("Name_Of_Frame");
3. Cambie a un marco por Título, ID u otros al pasar IWebElement
Si desea cambiar a un cuadro por ID o título, debe pasar un elemento web como parámetro:
driver.SwitchTo().Frame(driver.FindElement(By.Id("ID_OF_FRAME")));
driver.SwitchTo().Frame(driver.FindElement(By.CssSelector("iframe[title='Title_of_Frame']")));
También tenga en cuenta que si su cuadro tarda unos segundos en aparecer, es posible que deba esperar :
new WebDriverWait(driver, TimeSpan.FromSeconds(10))
.Until(ExpectedConditions.ElementIsVisible(By.Id("Id_Of_Frame")));
Sal de un cuadro:
driver.SwitchTo().DefaultContent()
Salir de un cuadro usando C #
Para cambiar el enfoque al documento principal o al primer fotograma de la página. Tienes que usar la siguiente sintaxis.
webDriver.SwitchTo (). DefaultContent ();
Cambiar entre marcos secundarios de un marco principal.
Considera que tienes un marco padre (Frame-Parent). y 2 marcos secundarios (Frame_Son, Frame_Daughter). Veamos varias condiciones y cómo manejarlas.
1. De padre a hijo o hija:
driver.switchTo().frame("Frame_Son");
driver.switchTo().frame("Frame_Daughter");
2. Desde el hijo al padre: si el marco principal es el predeterminado, cambie al marco predeterminado, o bien, del marco predeterminado al marco principal. Pero no puedes cambiar directamente de hijo a padre.
driver.switchTo().defaultContent();
driver.switchTo().frame("Frame_Parent");
3. De hijo a hija: si tu hermana comete un error, no le grites, simplemente comunícate con tu padre. De manera similar, le das control al marco principal y luego al marco secundario.
driver.switchTo().defaultContent();
driver.switchTo().frame("Frame_Parent");
driver.switchTo().frame("Frame_Daughter");
Espera a que se carguen tus marcos
En algunos casos, es posible que su marco no se muestre de inmediato y probablemente tenga que esperar hasta que se cargue para cambiar. O de lo contrario tendrá NoSuchFrameException.
Así que siempre es una buena opción esperar antes de cambiar. La siguiente es una forma ideal de esperar hasta que se carga un marco.
try{
new WebDriverWait(driver, 300).ignoring(StaleElementReferenceException.class).
ignoring(WebDriverException.class).
until(ExpectedConditions.visibilityOf((driver.findElement(By.id("cpmInteractionDivFrame"))));}
catch{
// lanza la excepción solo si su marco no es visible en su tiempo de espera 300 segundos}