Página 1 de 1

Página com ID e XPATH idênticos

Enviado: Sáb Abr 25, 2020 10:30 am
por adveduardo
Bom dia,
Estou com um Problema da seguinte ordem, a página do qual estou interagindo esta possui duas table idênticas mas com conteúdo distinto.

Ocorre que ao extrair ela extrai sempre a primeira. Como faço para selecionar o segundo xpath ou id já que ele é idêntico ao primeiro.

O XPATH da primeira table:

//*[@id="sample-table-2"]

o XPATH da segunda table:

//*[@id="sample-table-2"]

Desde já agradeço.

Re: Página com ID e XPATH idênticos

Enviado: Sáb Abr 25, 2020 12:10 pm
por adveduardo
Depois de alguns testes consegui utilizando o (FindElementByClass), mas não consegui localizar uma solução de como usar:

FindElements

para localizar o segundo elemento.


att.

Re: Página com ID e XPATH idênticos

Enviado: Sáb Abr 25, 2020 7:51 pm
por webmaster
Resolveu? Pode postar o código?

Re: Página com ID e XPATH idênticos

Enviado: Dom Abr 26, 2020 10:40 am
por adveduardo
Ficou assim não sei se representa a melhor técnica mas resolveu!

Primeira tabela

debug.print driver.FindElementByXPath("//*[@id="sample-table-2"]").Text

Segunda tabela

debug.print driver.FindElementByClass("grid-enderecos").Text


Certa vez eu vi o amigo comentar sobre (ElementsBy) no plural para pegar todas e depois selecionar a ordem. Quando tem esse problema. Só que não entendi como escrever Ex. debug.print driver.FindElementByXPath("//*[@id="sample-table-2"]").Text onde ficaria o numeral para selecionar?

att.

Re: Página com ID e XPATH idênticos

Enviado: Dom Abr 26, 2020 1:03 pm
por webmaster
as funções FindElementBy[Id, Class, Xpath] (singular) retornam um IWebElement.
as funções FindElementBys[Id, Class, Xpath] (plural) retornam um IWebElements, que é basicamente um array de IWebElements.

Você pode acessar ele seja via índice:

Código: Selecionar todos

driver.FindElementsByClass("classe")(1) '<-- acessa o índice 1 do array
Ou via loop

Código: Selecionar todos

Dim driver as NewChromeDriver
Dim elemento as IWebElement, elementos as IWebElements

'navega...

Set elementos = driver.FindElementsByClass("classe") 'aqui retorna mútilplos elementos

'itera sobre
For Each elemento In elementos 
    Debug.Print elemento.Text
Next elemento