Selenium WebDriver establece el atributo que tiene webelement

Actualmente tengo un problema: quiero cambiar del marco actual a padre. La aplicación tiene muchos marcos internos, por lo que usar driver.switchTo (). DefaultContent () no es el caso. En esta discusión , se sugiere una posible solución: debe recordar todos los marcos que visitó e iterar sobre ellos desde arriba utilizando

driver.switchTo (). defaultContent ()

El principal problema es el hecho de que, en mi aplicación, a veces me veo obligado a usar el cambio a marcos ubicados por xpath y otros localizadores: usar el cambio por WebElement. Y como ya se mencionó en la discusión anterior, después de cambiar todos los WebElement ubicados se vuelven inválidos y no se pueden usar para cambiar. Entonces debería tener alguna forma de encontrar este elemento dentro del marco nuevamente. Aunque puedo ubicar el índice de este elemento de marco ejecutando algunas llamadas js (es decir (WebElement)executeScript("window.frames[i]").equals(myWebElement)), no es el caso, ya que el índice puede cambiar cuando se eliminan algunos marcos de la página. O bien puedo intentar encontrar nombres de marcos e identificaciones, pero es posible que no se especifiquen.

Por lo tanto, veo la única solución posible: establecer algunos atributos en los marcos de ese padre de los seleccionados actualmente, por ejemplo, atributo activo con valor verdadero. También debería poder hacer esto para todos los métodos que pueden cambiar el marco (existen 3). En todos los métodos, puedo recibir WebElement que representa el marco, pero hasta donde sé para cambiar el valor del atributo, debe ejecutar algún código js. Entonces, el problema es cómo ubicar WebElement actual en js.

Gracias por leer todo esto.

Respuesta 1

mire este fragmento de código arriba. esa es la mejor manera de ubicar el elemento actual en Js pasando el elemento como un argumento para ejecutar el script y haciendo referencia a él en js usando argumentos [0]

WebElement element = driver.findElement(By.id("foo"));
String contents = (String)((JavascriptExecutor)driver).executeScript("return arguments[0].innerHTML;", element); 
Respuesta: 2

Estoy desarrollando un sistema de información y hay algo con lo que no sé cómo lidiar. Digamos que mi sitio web permite que el administrador edite usuarios. Cuando dos administradores desean editar el mismo usuario en ...

Cambié a Eclipse 4.2 hace un tiempo y todo es perfecto, pero ahora noté que cuando hago clic derecho en un archivo XML o XSD, ya no tengo la opción de validar ese archivo (3.7 funcionó bien). Lata ...

Estoy usando t: datatable en mi aplicación JSF. ¿Puedo cambiar CSS de fila perticular en base de condición? Condición significa con procesamiento de variable de tabla de datos. ¿Es posible? Estoy usando jsf 1.2 (aunque ...

Tengo que construir una aplicación web que muestre algunos datos. Tendré dos tipos de usuarios: usuarios registrados y usuarios anónimos. Los usuarios registrados ejecutarán la aplicación desde la intranet de la empresa, y de forma anónima ...