Estou com o seguinte problema, olhem um exemplo do html:
....
<tr>
<th style="width: 1%; white-space: nowrap; text-align: right;">
<b>Texto 1:</b> (Esse texto não muda por isso é necessário referencia-lo)
</th>
<td>texto que quero pegar</td> (Esse texto muda, não da para obter o mesmo diretamente)
</tr>
...
Desejo pegar o texto dentro do td, referenciando o texto 1, alguém conhece alguma forma?
tentei algo como: "//b[contains(text(), 'Texto1:')]/td", não funciona pq td não é um elemento filho de b, fazendo com que o findElement não encontre o elemento com esse path, alguém teria alguma ideia de como fazer? ou realmente não é possível?
Não sei se você esta usando o chrome, mas para pegar a referência de um elemento do DOM é bem fácil nele, segue os passos abaixos e ve se da certo:
1-Inspeciona o elemento
2-Na aba elements, clica com o botão direito sobre o elemento que você quer
3-Passa o mouse em Copy para abrir um novo menu
4-Selecione Copy xpath
5-Cola o xpath no código
Também é possível utilizar JavaScript/jQuery no selenium, ai fica bem fácil buscar o elemento que você quer
Estou utilizando o chrome sim, eu conheço a forma de copiar o xpath, mas a ideia é pegar o elemento referenciando “Texto1:”, pq é o único texto que não muda sacou?
O texto que quero pegar, muda e não seria viável simplesmente copiar o xpath do elemento pq essa pagina é uma tabela, se for adicionado algum outro elemento a referencia pra o elemento vai mudar e vai quebrar o teste implementado.
consegui resolver, obrigado pela a ajuda galera pra resolver esse caso basta fazer o seguinte:
//b[contains(text(), 'Valor Atual do Bem:')]/../../td
Os “..” faz selecionar o pai do no atual, como o no atual é o “b”, os primeiros “..” selecionam “th”, e o segundo “..” selecionam tr, com isso posso selecionar o td dentro do tr.