Localizar elemento em tabela Selenium+C#

1,671 views
Skip to first unread message

Fernanda Haisereder

unread,
Jun 16, 2015, 1:53:23 PM6/16/15
to guts-rs...@googlegroups.com
Oi pessoal, boa tarde,preciso de um help localizar um elemento em uma tabela, identificar a linha em que o elemento está e clicar em um botão que está nessa linha especifica...

Abraço

Elias Nogueira

unread,
Jun 16, 2015, 3:54:23 PM6/16/15
to guts-rs-sucesu
Oi Fernanda,
Eu não manjo nada em C#, mas a lógica é a mesma para toda a linguagem....

Dica 1: utilize xpath para isso. O Firepath (plugin para o firebug) pode te ajudar a encontrar o xpath da tabela

Dica 2: toda uma tabela é constituída de linhas <tr> e colunas <td>. Ai tu pode aplicar a seguinte lógica: se eu preciso pegar a quarta linha da terceira coluna, teremos, em xpath a sintaxe td[4] e tr[3]

Dica 3: para encontrar uma linha com um determinado valor, basta fazer uma iteração (for i) sobre a linha. Ex: tr[i]
 até encontrar o valor. Quando encontrar é só sair do laco, pegar a posição do i (que estará na linha certa) e ir até a coluna/botão necessário.

Em alto nível é isso...
No Selenium tu vai precisar usar o xpath para isso, onde o valor da coluna é uma variável da iteração do for.

Qualquer coisa prende o grito!!

Abraço!

--
Elias Nogueira


2015-06-16 14:53 GMT-03:00 Fernanda Haisereder <nanda.s...@gmail.com>:
Oi pessoal, boa tarde,preciso de um help localizar um elemento em uma tabela, identificar a linha em que o elemento está e clicar em um botão que está nessa linha especifica...

Abraço

--
Você recebeu esta mensagem porque está inscrito para o Google
Grupos "Grupo de Usuarios de Teste de Software - SUCESU-RS" grupo.

Para postar neste grupo, envie um email para guts-rs...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail para
guts-rs-suces...@googlegroups.com
Para mais opções, visite este grupo em
http://groups.google.com/group/guts-rs-sucesu?hl=pt?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "GUTS-RS - Grupo de Usuários de Testes de Software do RS - SUCESU-RS" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para guts-rs-suces...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Fernanda Haisereder

unread,
Jun 17, 2015, 12:33:15 PM6/17/15
to guts-rs...@googlegroups.com
Oi Elias,

Tenho q procurar a linha em que está um determinado elemento, estava precisando da dica 3 :) brigadão

Fernanda Haisereder

unread,
Jun 18, 2015, 8:32:54 AM6/18/15
to guts-rs...@googlegroups.com
Oi Elias, tudo bem?

Me surgiu uma dúvida agora...como eu faço pra localizar o ultimo elemento de uma tabela dinâmica? Tipo, eu vou adicionar um cliente e quero localizar ele na lista após a inclusão, a tabela aumenta ou diminui conforme eu incluo ou excluo dados, então essa tabela não tem um número fixo de linhas, como eu consigo identificar nesse caso?

Abraço!!


Em terça-feira, 16 de junho de 2015 16:54:23 UTC-3, Elias Nogueira escreveu:

Thiago M Pereira

unread,
Jun 18, 2015, 8:53:21 AM6/18/15
to guts-rs...@googlegroups.com
Fernanda, estrutura seu css até a encontrar a última linha de sua tabela e utiliza o parâmetro .last(), por exemplo: 

@variavel = @driver.find_elements(:css, "#container table.results-list tr td").last().text
onde: 

:css, "#container table.results-list tr td" = Última linha encontrada (sim, nesse caso, tem as colunas (td) 
.last().text = Vai sempre pegar o último cara, independente se vc incluir ou excluir algum item, o .text no caso, é que o conteúdo que está dentro da célula é um texto, mas pode ser qualquer outra coisa. 
PS: Está em test::unit, mas o conceito e a procura do elemento (se usar Jquery) é o mesmo.
PS2: Não sou perito em C#, mas para busca de elemento, vc tem que observar que pode achar apenas um elemento, assim como vc pode encontrar vários elementos da mesma classe, ai se você se encontrar nesse cenário, você usa o find_elements (sim, com s no final) ... 
Eu defini uma variável @variavel porque eu fatalmente irei utilizar o conteúdo dela em algum momento, mas não é obrigatório OK.
Qualquer coisa grita ai =)

Att.
 
 
Thiago Marques Pereira
Especialista em Qualidade de Software
Agilista

Gabriel Oliveira

unread,
Jun 18, 2015, 9:05:50 AM6/18/15
to guts-rs...@googlegroups.com
Dando um pouco mais de contexto, até pra posteridade...

Existem, no mínimo, duas formas de achar elementos num DOM usando selenium: XPath e CSS. Seguem alguns links com as diferenças (o primeiro é mais geralzão, o segundo vai mais direto ao ponto, destacando os problemas de usar XPath)

Para quem quer aprender CSS Selectors, alguns tutorias seguem:

Fernanda Haisereder

unread,
Jun 18, 2015, 9:07:08 AM6/18/15
to guts-rs...@googlegroups.com
valeu pessoal, vamos ver se agora sai...:)

Você recebeu essa mensagem porque está inscrito em um tópico no grupo "GUTS-RS - Grupo de Usuários de Testes de Software do RS - SUCESU-RS" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/guts-rs-sucesu/a9VyARYjiCM/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para guts-rs-suces...@googlegroups.com.

Thiago M Pereira

unread,
Jun 18, 2015, 9:11:22 AM6/18/15
to guts-rs...@googlegroups.com
Ou via Jquery (o que eu prefiro) 





Att.
 
 
Thiago Marques Pereira
Especialista em Qualidade de Software
Agilista


Elias Nogueira

unread,
Jun 18, 2015, 10:08:32 AM6/18/15
to guts-rs-sucesu
Oi Fernanda,
Usando Java (C# deve ser muito parecido) eu utilizo a seguinte lógica com o Selenium para trabalhar com tabelas e tamanhos variados.

  • Localize todas as linhas da tabela, via xpath através do comando findElements
  • Faça um laço com o retorno do findElements (que será uma lista de webelements). Em Java eu faço um for each, mas não sei se tem isso em C#,logo tu podes fazer um for i.
  • Caso tu percorra todas as linahs da tabela sem encontrar o resultado, ou tu lança uma expection ou navega para a próxima paginação da tabela, se existir.
Com essa lógica tu consegue percorrer a tabela inteira, tanto linhas quanto colunas, sem que o Webdriver lance uma exception.


Abraço!

--
Elias Nogueira

Reply all
Reply to author
Forward
0 new messages