Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

160
Vistas
Las comparaciones de cadenas en Selenium usando xpath fallan aunque ambas cadenas son exactamente iguales

Estoy usando un marco basado en palabras clave y datos. La cadena esperada proviene de la hoja de Excel y la real de la página web, aunque ambas variables imprimen exactamente las mismas cadenas, pero el script de prueba falla. Hace "PASS" para cadenas sin espacio como " Resign " pero "FAIL" para cadenas con espacio como " Property Search " a continuación es el resultado que imprime PASS hasta "Resign" después de eso, ignora los números para depurar. También incluí xpath usado en el resultado.

Resultado generado
Por.xpath: html/body/div[2]/div/div[2]/ul/li[1]/ul/li[1]
Texto de información sobre herramientas presente: - Revals
revalidaciones
1 Por.xpath: html/body/div[2]/div/div[2]/ul/li[1]/ul/li[2]/a[contiene(texto(),'Cuentas de clientes administradas')]
Texto de información sobre herramientas presente: - Cuentas de clientes administradas
Cuentas de clientes administradas
1
Por.xpath: html/body/div[2]/div/div[2]/ul/li[1]/ul/li[3]
Texto de información sobre herramientas presente: - Renuncia
dimite
1
Por.xpath: .// [@id='dashboard-dropdown']/li[4]/a
Texto de información sobre herramientas presente: - AR excepcional
Realidad aumentada excepcional
4
Por.xpath: .//
[@id='menuCreateDashboard']
Texto de información sobre herramientas presente: - Administrar panel
Administrar panel
4
Por.xpath: html/body/div[2]/div/div[2]/ul/li[2]/a
Texto de información sobre herramientas presente: - Búsqueda de propiedades
Búsqueda de Propiedades
4
Por.xpath: html/body/div[2]/div/div[2]/ul/li[3]/a
Texto de información sobre herramientas presente: - Base de datos de recursos fiscales
Base de datos de recursos fiscales
4
Por.xpath: html/body/div[2]/div/div[2]/ul/li[4]/a[contains(text(),'Quick Links')]
Texto de información sobre herramientas presente: - Enlaces rápidos
enlaces rápidos
4
Aquí está el código:

 public String verify_Text(String locatorType, String value, String data){ try { By locator; locator = locatorValue(locatorType, value); System.out.println(locator); WebElement element = driver.findElement(locator); //WebElement element = driver.findElement(By.cssSelector("#header>h1 a")); // Get tooltip text String toolTipText = element.getText(); System.out.println("Tool tip text present :- " + toolTipText); System.out.println(data); // Compare toll tip text if(toolTipText.contentEquals(data)) { System.out.println("1"); return PASS; } } catch(Exception e) { LOG.error(Executor.currentSheet + ":" + e); getScreenshot("verify_Link", data); System.out.println("3"); return FAIL; } getScreenshot("verify_Link", data); System.out.println("4"); return FAIL;

}

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

línea de código que funcionó para mí

 if(toolTipText.replaceAll("\\s+","").equalsIgnoreCase(data.trim().replaceAll("\\s+","")))

Después de usar este código y depurar, me di cuenta de que los datos pasados desde la hoja de Excel tenían espacio entre dos letras, mientras que no había espacio en la información sobre herramientas del elemento web. Pero esto no pude resolverlo usando el elemento de inspección porque no está visible. antes de usar replaceall("\s+","")

By.xpath: html/body/div[2]/div/div[2]/ul/li[1]/ul/li[5]/a Texto de información sobre herramientas presente: - ManageDashboard Manage Dashboard

después de usar replaceAll("\s+","") y eliminar el espacio de los datos provenientes de la hoja de Excel

By.xpath: html/body/div[2]/div/div[2]/ul/li[1]/ul/li[5]/a Texto de información sobre herramientas presente: - ManageDashboard ManageDashboard

over 4 years ago · Santiago Trujillo Denunciar

0

No tengo suficiente representante para comentar, pero estoy sugiriendo algunas cosas para probar:

Podría recortar la cadena, tal vez haya un carácter que no sea visible en una de las cadenas.

 if(toolTipText.trim().contentEquals(data.trim()))

O puede intentar usar el espacio de normalización para eliminar los caracteres de tabulación, retorno de carro y avance de línea.

 /*/a[normalize-space() = 'Hello World']
over 4 years ago · Santiago Trujillo Denunciar

0

A veces, cuando obtienes el texto de WebElements, tienden a tener espacios al principio o al final. Una mejor comparación sería

toolTipText.trim().equals(data.trim())

Si esto aún no funciona, tal vez elimine todos los espacios de las cadenas y luego compare. Me gusta esto:

 toolTipText = toolTipText.trim().replaceAll("\\p{Z}", ""); data = data.trim().replaceAll("\\p{Z}", ""); toolTipText.equals(data)

Aquí, la cadena Outstanding AR se convertirá en AR OutstandingAR después de replaceAll . Esto es ciertamente una exageración, pero si funciona, entonces es evidente que los espacios en la cadena son los que causaron el problema.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda