Todo depende de lo que en realidad contiene el código HTML, pero el selector de tr[contains(.,'hello')]/td
XPath significa "la primera celda de la primera fila que contiene la cadena 'hola' en cualquier lugar dentro de ella" (o, más exactamente, "la primer elemento TD en el elemento TR que contiene la cadena 'hola' en cualquier lugar dentro de él ", ya que Selenium no tiene idea de lo que realmente hacen los elementos involucrados). Es por eso que está obteniendo el resultado incorrecto cuando hay filas que contienen "hello" y "hello1"; ambas contienen "hello".
El selector tr[. ='hello']/td
sería más preciso, pero es un poco inusual (porque los elementos HTML TR no deben contener texto, se supone que el texto debe estar en elementos TH o TD dentro del TR) y probablemente ganó No funciona (porque el texto en otras celdas rompería la comparación). Probablemente deseetr[td[.='hello']]/td
, que significa "el primer elemento TD contenido en el elemento TR que contiene un elemento TD que tiene la cadena 'hola' ya que es texto completo".
¿Qué quiere decir con "no funciona correctamente"? ¿Cuál es el comportamiento inesperado? –
si tenemos dos elementos con el texto hello y hello1 y cuando usamos contains (., 'Hello'), este método siempre buscará hello. Problema si estos elementos están en una tabla y hello1 es el primer elemento y hello es el segundo, y cuando lo usemos, siempre indicará hello1, ya que es el primer elemento y contiene hello, pero queremos buscarlo. método de coincidencia –