El posicionamiento del elemento de página es lo más importante en la automatización, y Selenium WebDriver proporciona muchos métodos para el posicionamiento de elementos. Los probadores deben ser competentes en varios métodos de posicionamiento. Se utiliza el método de posicionamiento más fácil y estable.
Contenido de lectura
Pasos de prueba automatizados
Durante las pruebas automatizadas, pruebe la operación habitual de los elementos de página del programa
1. Encuentre el elemento de la página web y asignarlo a un objeto de almacenamiento (webelement)
2. Operaciones en objetos que almacenan elementos de página, como: Haga clic en el enlace, ingrese los caracteres en el cuadro de entrada, etc.
3. Verifique que los elementos de la página cumplan con las expectativas
A través de estos tres pasos, podemos completar la operación de un elemento de página, y encontrar el elemento de página es un paso muy importante. El elemento de página no se puede encontrar, y no se puede hacer más adelante
La complejidad práctica de la tecnología de la página web dificulta la ubicación de una gran cantidad de elementos de página. La gente a menudo no sabe cómo localizarlo.
Método de ubicación completo
Definir un elemento de página web utilizando la función FindElement del objeto WebDriver
Use la función FindElements para ubicar múltiples elementos de una página
Los elementos de página específicos deben almacenarse utilizando el objeto WebElement para uso posterior
Los métodos comúnmente utilizados para localizar elementos de página son los siguientes, ordenados por recomendación
Método de posicionamiento | Ejemplo de implementación del idioma Java |
Posicionamiento de identificación | driver.findElement (by.id ("valor de id")); |
posicionamiento de nombre | driver.findElement (by.name ("valor de nombre")); |
Todo el posicionamiento de texto de enlaces | driver.findElement (by.linkText ("Todo el texto del enlace")); |
Algunos posicionamiento de texto de enlaces | driver.findElement (by.PartialLinkText ("Texto parcial del enlace")); |
Posicionamiento CSS | driver.findElement (by.cssselector ("expresión css")); |
Posicionamiento de XPath | controlador.findelement (by.xpath ("expresión xpath")); |
Posicionamiento de nombre de clase | driver.findElement (by.className ("atributo de clase")); |
Nombre de etiqueta de etiqueta orientación | driver.findElement (by.tagname ("tagName")); |
Método jQuery | Js.Executescript ("return jQuery.find (" JQuery Expression ")") |
Cómo ubicar
Cuando se usa Selenium WebDriver para posicionamiento de elementos, el método FindElement o FindElements generalmente se usa para combinar la clase para devolver los manijas de los elementos para localizar elementos
El método FindElement () devuelve un elemento. Si no se encuentra, se lanzará una excepción.
El método FindElements () devuelve múltiples elementos. Si no se encuentra, se devolverá una matriz vacía y no se lanzará ninguna excepción.
Cómo elegir un método de posicionamiento
La estrategia es elegir un método de posicionamiento simple y estable.
1. Cuando el elemento de página tiene un atributo de identificación, intente usar ID para localizarlo. Si no, elija otro método de posicionamiento
2. CSSSELECTOR se ejecuta rápido, recomendado
3. Al colocar hipervínculos, puede considerar LinkText o ParteLinkText: pero debe tenerse en cuenta que el texto a menudo cambia, por lo que no se recomienda usarlo.
4. Xpath tiene la función más poderosa. La velocidad de ejecución fue lenta en ese momento, porque necesitaba encontrar todo el DOM, así que trate de usarla lo menos posible. Cuando realmente no hay forma, use xpath
Encuentre elementos por id: by.id ()
La forma más recomendada de encontrar elementos a través de la identificación de elementos de página. W3C Standard recomienda que los desarrolladores proporcionen atributos de identificación únicos para cada elemento de página.
Una vez que un elemento recibe un atributo de identificación único, es fácil localizar el elemento cuando hacemos pruebas automatizadas. La ID del elemento se usa como el atributo de identificación preferido porque es la estrategia de identificación más rápida.
Tomar la página de inicio de Baidu como ejemplo, el código de muestra HTML del cuadro de búsqueda es el siguiente, su ID es KW
<input type = "text" autoComplete = "Off" maxLength = "100" id = "kw" name = "wd">
El código de muestra HTML para el elemento del botón de búsqueda "Baidu" es el siguiente, su ID es su SU
<input type = "Subt" id = "Su" value = "Baidu">
El código de muestra Java para encontrar elementos por ID en Selenium/WebDriver es el siguiente
WebDriver Driver = new Firefoxdriver (); conducir.get ("http://www.baidu.com"); WebElement Searchbox = Driver.FindElement (by.id ("kw")); Searchbox.sendKeys ("Little Tank Blog Park"); WebElement SearchButton = Driver.FindElement (by.id ("su")); SearchButton.submit (); controlador.close ();Encuentra elementos por nombre: by.name ()
Tomando el cuadro de búsqueda de la página de inicio de Doucan.com como ejemplo, el código HTML de su cuadro de búsqueda es el siguiente, su nombre es: Q
<input type = "text" autocomplete = "Off" name = "Q" PlaceHolder = "Libros, películas, música, grupos, estaciones, miembros" size = "12" maxLength = "60">
El código Java en WebDriver para buscar cuadros de búsqueda en la página de inicio de Douban a través del nombre es el siguiente:
WebDriver Driver = new Firefoxdriver (); conducir.get ("http://www.douban.com"); WebElement Searchbox = Driver.FindElement (by.name ("Q")); Searchbox.sendKeys ("tanque pequeño"); Searchbox.submit ();Encuentre elementos por tagname: by.tagname ()
Al buscar elementos a través de TagName, se devolverán múltiples elementos. Por lo tanto, se requiere FindElements ().
WebDriver Driver = new Firefoxdriver (); driver.get ("http://www.cnblogs.com"); List <BeSELEMENT> BOTONS = Driver.FindElements (by.tagname ("div")); System.out.println ("Button:" + Buttons.Size ());Nota: Si usa TagName, debe tener en cuenta que el nombre de etiqueta de muchos elementos HTML es el mismo.
Por ejemplo, casilla de radio, casilla de verificación, cuadro de texto, cuadro de contraseña. Estas etiquetas de elementos son todas de entrada. En este momento, el nombre de etiqueta por sí solo no puede obtener con precisión los elementos que queremos. También debe combinar el atributo de tipo para filtrar los elementos que queremos.
WebDriver Driver = new Firefoxdriver (); driver.get ("http://www.cnblogs.com"); List <BeSELEMENT> BOTONES = Driver.FindElements (by.tagname ("entrada")); for (WebElement WebElement: Botons) {if (webeLement.getAttribute ("type"). Equals ("Text")) {System.out.println ("El texto de entrada es:" + webeLement.gettext ()); }}Encuentra elementos por classname
Tomando la búsqueda de la página de inicio de Taobao como ejemplo, el código HTML de su cuadro de búsqueda es el siguiente:
<Input AutoComplete = "Off" AutoFocus = "True" AccessKey = "S" aria-Label = "Por favor, Ingrese el texto de búsqueda" name = "q" id = "q" aria-haspopup = "true" aria-ComboBox = "list" rol = "comboBox" x-webkit-grammar = "builtin: traducir" tabindex = "0">>
El código de muestra Java es el siguiente
WebDriver Driver = new Firefoxdriver (); conduct.get ("http://www.taobao.com"); Thread.sleep (15000); WebElement Searchbox = Driver.FindElement (by.className ("Search-ComboBox-Input")); Searchbox.sendKeys ("Down Jacket"); Searchbox.submit (); Nota: Cuando se usa ClassName para localizar elementos, a veces encuentra un
Encontrar elementos por linkText by.linkText ();
Los elementos de posición directamente a través de información de texto en el hipervínculo: p.
<a href = "https://passport.baidu.com/v2/?login&tpl=mn&u=http%3a%2f%2fwww.baidu.com%2f" name = "tj_login" en ondclick = "return false;"> Login </a>
El código HTML es el siguiente
WebDriver Driver = new Firefoxdriver (); conducir.get ("http://www.baidu.com"); Webelement loginLink = driver.findElement (by.linkText ("login")); LoginLink.click ();Encuentre elementos por parciallinkText ()
Este método es una versión mejorada del método anterior. Cuando solo desea coincidir con algunas palabras clave, puede usar este método para localizar elementos a través de algún texto de hipervínculo.
El código HTML es el siguiente
WebDriver Driver = new Firefoxdriver (); conducir.get ("http://www.baidu.com"); WebElement LoginLink = Driver.FindElement (by.PartialLinkText ("log")); LoginLink.click ();Nota: Cuando se usa este método para ubicar, el problema puede ser causado es que cuando no sabe que un hipervínculo contiene "etc.". El método FindElement solo devolverá el primer elemento encontrado y no devolverá todos los elementos que cumplan con los criterios.
Si desea obtener todos los elementos que cumplan con los criterios, solo puede usar el método FindElements.
Lo anterior es la información sobre el posicionamiento del elemento Java Selenium. Continuaremos agregando información relevante en el futuro. ¡Gracias por su apoyo!