Estoy usando proyecto Java selenio para la automatización de la página web. La página Web contiene una gran cantidad de elementos DOM-sombra raíz de varios niveles que no soy capaz de interactuar con el uso de selenio findElement
método.
He probado las siguientes soluciones:
- css profunda (no trabajo en la última versión del navegador Chrome)
- JS Ejecutor. (Esto es muy tedioso y se vuelve compleja de mantener)
Nota:
Si conoces alguna otra solución que no sea mencionado anteriormente que pueda poner en práctica en el marco de selenio Java, por favor pase a la solución. Gracias por adelantado !.
Hay un muy buen complemento que puede ser utilizado con el proyecto de selenio enlace . Esto ayuda en la escritura mucho mejor, código legible y fácil de mantener. El uso de este se puede acceder a varios niveles de DOM sombra (hasta 4 niveles). Esto utiliza selector CSS simple de identificar elementos.
WebElement findElement(String cssSelector)
: Utilizar este método si desea solo elemento de DOM
List<WebElement> findElements(String cssSelector)
: Utilice esta opción si desea encontrar todos los elementos de DOM
WebElement findElements(WebElement parent, String cssSelector)
: Utilice esta opción si desea encontrar un solo elementos de DOM objeto padre
List<WebElement> findElements(WebElement parent, String cssSelector)
: Utilice esta opción si desea encontrar todos los elementos de DOM objeto padre
WebElement getShadowElement(WebElement parent,String selector)
: Utilice esta opción si desea encontrar un solo elemento de DOM padres
List<WebElement> getAllShadowElement(WebElement parent,String selector)
: Utilice esta opción si desea encontrar todos los elementos de DOM padres
boolean isVisible(WebElement element)
: Utilice esta opción si desea encontrar la visibilidad del elemento
boolean isChecked(WebElement element)
: Utilice esta opción si desea comprobar si se selecciona la casilla de verificación
boolean isDisabled(WebElement element)
: Utilice esta opción si desea comprobar si el elemento está desactivado
String getAttribute(WebElement element,String attribute)
: Utilice esta opción si desea obtener atributos como atributos aria-seleccionada y otra personalizados de elementos.
void selectCheckbox(String label)
: Usar esto para seleccionar elemento casilla de verificación usando la etiqueta.
void selectCheckbox(WebElement parentElement, String label)
: Usar esto para seleccionar elemento casilla de verificación usando la etiqueta.
void selectRadio(String label)
: Usar esto para seleccionar elemento de radio que utiliza la etiqueta.
void selectRadio(WebElement parentElement, String label)
: Utilice esta opción para seleccionar el elemento de radio de DOM padres usando la etiqueta.
void selectDropdown(String label)
: Usar esto para seleccionar desplegable elemento de la lista utilizando etiqueta (utilizar este si sólo uno desplegable está presente o cargado en UI).
void selectDropdown(WebElement parentElement, String label)
: Usar esto para seleccionar el elemento de la lista desplegable desde el DOM padres usando la etiqueta.
Cómo utilizar este plugin: Tendrá que la dependencia en su proyecto.
Maven
<dependency>
<groupId>io.github.sukgu</groupId>
<artifactId>automation</artifactId>
<version>0.0.4</version>
<dependency>
para la etiqueta HTML que resida, en un elemento dom sombra-root
<properties-page id="settingsPage">
<textarea id="textarea">
</properties-page>
Puede utilizar este código en su marco para agarrar el elemento de área de texto del objeto.
import io.github.sukgu.*;
Shadow shadow = new Shadow(driver);
WebElement element = shadow.findElement("properties-page#settingsPage>textarea#textarea");
String text = element.getText();