RESOLVIDO: Selenium - Dúvida com Xpath

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

$('td:contains("texto que quero pegar")')

EU só não lembro como configura o jquery nele

1 curtida

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.

Ok, tenta o seguinte

//b[contains(text(), 'Texto 1:')]/../following-sibling::td
1 curtida

Infelizmente não deu certo… =/

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.

1 curtida