07_Estrategia de posicionamiento de Selenium IDE xpath y css

1. Posicionamiento mediante XPath

Atributos XPath
Siempre se recomienda utilizar atributos XPath si no existe un atributo de identificación o nombre adecuado para el elemento que está buscando.
Los atributos XPath permiten localizar elementos web utilizando diferentes atributos.

  • Descripción: //htmltag[@attribute1='value1' y @attribute2='value2']
  • Ejemplo: //input[@id='contraseña' y @placeholder='contraseña']

¿Qué es XPath?
XPath es la abreviatura de XML Path. Dado que el documento HTML en sí es una página XML estándar, podemos usar XPath para ubicar elementos de la página.

Desventajas del posicionamiento xpath
Con este método de posicionamiento, webdriver escaneará todos los elementos de toda la página para localizar los elementos que necesitamos. Esta es una operación que requiere mucho tiempo. Si se utiliza una gran cantidad de xpaths en el script para el posicionamiento de elementos, el La velocidad de ejecución del script se reducirá, puede ser un poco más lenta.

El código testXpath.html es el siguiente

<html>
<head><title>Test Xpath</title></head>
<body>
    <div id="div1">
        <input name="div1input"></input>
        <a href="http://www.sogou.com">搜狗搜索</a>
        <img alt="div1-img1" src="http://www.sogou.com/images/logo/new/sogou.png" href="http://www.sogou.com">搜狗图片</img>
        <input type="button" value="查询"></input>
    </div>
    <br />
    <div name="div2">
        <input name="div2iniput" /></input>
        <a href="http://www.baidu.com">百度搜索</a>
        <img alt="div2-img2" src="http://www.baidu.comn/img/bdlogo.png" href="http:/www.baidu.com">百度图片</img>
    </div>
</body>
</html>

Método de posicionamiento de ruta absoluta:
en la página web probada, busque la
expresión XPath del botón en la primera etiqueta div

/html/body/div/input[@value="查询"]
WebElement button = driver.findElement(By.xpath("/html/body/div/input[@value='查询']"));

Usando las herramientas de depuración del navegador, puede obtener directamente la ruta absoluta
Insertar descripción de la imagen aquí
del
Por lo tanto, no se recomienda utilizar la escritura de ruta absoluta.

La diferencia entre rutas absolutas y rutas relativas.
Una ruta absoluta comienza con "/", lo que permite que XPath comience a analizar desde el nodo raíz del documento. Una
ruta relativa comienza con "//", lo que permite que XPath comience a analizar desde cualquier nodo de elemento del documento.

Método de posicionamiento de ruta relativa:
en la página web probada, busque la
expresión XPath del botón en la primera etiqueta div

//input[@value="查询"]
WebElement button = driver.findElement(By.xpath("//input[@value='查询']"));

Utilice el número de índice
para ubicar el botón "Consulta" en la segunda etiqueta div en la página web probada.

//input[2]
WebElement button = driver.findElement(By.xpath("//input[2]"));

Utilice
el posicionamiento de atributos de página para ubicar el primer elemento de imagen en la página bajo prueba

//img[@alt='div1-img1']
WebElement button = driver.findElement(By.xpath("//img[@alt='div1-img1']"));

El posicionamiento difuso comienza con la palabra clave
para buscar elementos que contengan la palabra clave 'div1' al comienzo del atributo alt de la imagen.

//img[starts-with(@alt,'div’)]

El posicionamiento difuso contiene palabras clave
para encontrar elementos cuyo atributo alt de imagen contenga la palabra clave 'g1'

//img[contains(@alt,'g1')]

La función text () de posicionamiento de texto
encuentra todos los elementos cuyo texto es "Baidu Search"

driver.findElement(By.xpath("//*[text()='百度搜索']"));

Encuentre todos los hipervínculos con el texto "Buscar"

driver.findElement(By.xpath("//a[contains(text(),'搜索')]"));

2. Posicionamiento vía CSS

1. Selector de etiquetas

driver.findElement(By.cssSelector("input"));

Pase directamente la etiqueta del elemento que se va a ubicar y podrá ubicar directamente el elemento.

2. Selector de ID, selector de clase.

driver.findElement(By.cssSelector("#kw"));     //#表示id属性定位器,后面紧跟id属性值
driver.findElement(By.cssSelector(".s_ipt"));   //英文的. 表示class定位器,后面紧跟class属性值

3. Selector de elementos descendientes

driver.findElements(By.cssSelector("div#u1 a"));   

Ubique el elemento div a través del selector de etiquetas + selector de id. El selector de descendientes está representado por un espacio y se pueden obtener todas las etiquetas a de los descendientes del elemento div (nota: se pueden obtener en múltiples niveles)

4. Selector de elementos secundarios

driver.findElements(By.cssSelector("div#u1>a"));

Ubique el elemento div a través del selector de etiquetas + selector de id. El selector secundario está representado por >, y puede obtener todas las etiquetas a de los elementos secundarios del elemento div (nota: solo se puede obtener el siguiente nivel del div, no entre niveles )

5. Selector de elementos adyacentes

driver.findElement(By.cssSelector("div#u1>a+a"));

Primero ubique la etiqueta de noticias y use el selector de elementos adyacentes para indicarla con + para obtener la etiqueta del elemento hermano inmediatamente adyacente a la etiqueta (solo coincide el primer elemento hermano)

6. Selector de atributos

driver.findElement(By.cssSelector("input[name='wd']"));

Se puede filtrar por cualquier valor de atributo de elemento.

Posicionamiento del elemento DOM

La función findElement del objeto WebDriver en el proceso de posicionamiento
define un elemento de página web;

El método findElements puede localizar varios elementos de la página;

Utilice objetos WebElement para almacenar elementos posicionados para operaciones posteriores;

posicionamiento de identificación

driver.findElement(By.id(“id的值”))

posicionamiento del nombre

driver.findElement(By.name(“name的值”))

posicionamiento del método xpath

driver.findElement(By.xpath(“xpath表达式”))

Posicionamiento del nombre de clase

driver.findElement(By.className(class属性”))

posicionamiento css

driver.findElement(By.cssSelector(“css表达式”))

Posicionamiento del nombre de la etiqueta TagName

driver.findElement(By.tagName(“标签名称”))

Posicionamiento de expresión jquery

Js.executeScript(return jQuery.find(“jquery表达式”))

Posicionamiento del texto completo del enlace.

driver.findElement(By.linkText(“链接的全部文字”))

Posicionamiento de texto parcial de enlaces.

driver.findElement(By.partialLinkText(“链接的部分文字”))
※ 如果使用 By.tagName,By.c lassName 定位,只会返回第一个匹配元素,但元素class元素内容不止一个,而是类似 <div class="btn-login btn"> 可以使用 By.cssSelector 的方式定位;

Supongo que te gusta

Origin blog.csdn.net/dcm1324659876/article/details/132361219
Recomendado
Clasificación