Tutto dipende da ciò che il vostro HTML contiene in realtà, ma la vostra tr[contains(.,'hello')]/td
selettore XPath significa "la prima cella della prima riga che contiene la stringa 'ciao' ovunque all'interno di esso" (o, più precisamente, "il il primo elemento TD nell'elemento TR che contiene la stringa 'ciao' ovunque all'interno di esso ", dal momento che il selenio non ha idea di cosa siano realmente gli elementi coinvolti. Ecco perché sta ottenendo il risultato sbagliato quando ci sono file contenenti "ciao" e "ciao1" - entrambi contengono "ciao".
Il selettore tr[. ='hello']/td
sarebbe più preciso, ma è un po 'insolito (perché gli elementi HTML TR non dovrebbero contenere testo - il testo dovrebbe essere in elementi TH o TD all'interno del TR) e probabilmente ha vinto funziona (perché il testo in qualsiasi altra cella potrebbe interrompere il confronto). Probabilmente si desideratr[td[.='hello']]/td
, che significa "il primo elemento TD contenuto nell'elemento TR che contiene un elemento TD con la stringa 'ciao' come testo completo".
fonte
2011-10-14 12:34:52
Cosa intendi con "non funziona correttamente"? Qual è il comportamento inaspettato? –
se abbiamo due elementi con testo ciao e ciao1 e quando usiamo contiene (., 'Ciao'), allora questo metodo cercherà sempre ciao. Problema se questi elementi sono in una tabella e ciao1 è il primo elemento e ciao è il secondo e quando usiamo contiene ciao sarà sempre puntato su ciao1 in quanto è il primo elemento e contiene ciao ma vogliamo cercare ciao ecco perché ho bisogno di esatto match method –