Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Clicar na seta para ir para próxima página
Clicar na seta para ir para próxima página
Olá!
Apesar da ajuda inestimável do Mikel, estou preso num trecho do meu código.
Na minha rotina de trabalho, eu faço uma pesquisa que me retorna várias páginas. No caso, eu ja sei como pesquisar e como colar determinadas informações no Excel. A rotina seria algo como "pesquisar - abre primeira pagina - copia e cola informacoes - clica na seta para ir para a proxima pagina - copia e cola informacoes - etc etc até a utima pagina da pesquisa.
Mas, eu nao sei como fazer o VBA "clicar" nessa seta, pois o objeto nao tem Id, Tag, name, etc.... só tem essa linha html
<td class=" dr-dscr-button rich-datascr-button" onclick="Event.fire(this, 'rich:datascroller:onscroll', {'page': 'next'});">
Então, meus caros, me ajudem! preciso de um código para "clicar" nessa bendita seta, e que também "identifique" que é a última página disponivel.
Por fim e não menos importante: sabe aquele seu conhecido Dummy, q vcs tem q falar bem devagar para entender? Pois é: ele é um gênio se comparado comigo Então, gente, mandem o código, com a explicação mais simples possivel!
Abraços
Apesar da ajuda inestimável do Mikel, estou preso num trecho do meu código.
Na minha rotina de trabalho, eu faço uma pesquisa que me retorna várias páginas. No caso, eu ja sei como pesquisar e como colar determinadas informações no Excel. A rotina seria algo como "pesquisar - abre primeira pagina - copia e cola informacoes - clica na seta para ir para a proxima pagina - copia e cola informacoes - etc etc até a utima pagina da pesquisa.
Mas, eu nao sei como fazer o VBA "clicar" nessa seta, pois o objeto nao tem Id, Tag, name, etc.... só tem essa linha html
<td class=" dr-dscr-button rich-datascr-button" onclick="Event.fire(this, 'rich:datascroller:onscroll', {'page': 'next'});">
Então, meus caros, me ajudem! preciso de um código para "clicar" nessa bendita seta, e que também "identifique" que é a última página disponivel.
Por fim e não menos importante: sabe aquele seu conhecido Dummy, q vcs tem q falar bem devagar para entender? Pois é: ele é um gênio se comparado comigo Então, gente, mandem o código, com a explicação mais simples possivel!
Abraços
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Clicar na seta para ir para próxima página
Otalivio, boa noite.
Dummy foi péssima... rs. Mas vamos ao código.
Como você disse, não existe um atributo de identificação fácil, para conseguir acessar o elemento diretamente. Então, para tal, é preciso criar uma rotina que faça uma varredura em todos os elementos existentes no site, do elemento em questão. No seu caso, o elemento Td (Table Data).
Nesse caso, temos que trabalhar com dois objetos específico: uma coleção de objetos e um objeto único. Vamos atribuir todos os elementos Td da página, para a Coleção de Objetos e, através de um laço, vamos analisar todos os elementos Td dentro desta coleção, através do elemento Objeto Único. Vamos ao código:
Bem, acredito que esse código irá ajudar na sua necessidade.
Teste e nos retorne, ok.
Abraços e bom descanso.
Dummy foi péssima... rs. Mas vamos ao código.
Como você disse, não existe um atributo de identificação fácil, para conseguir acessar o elemento diretamente. Então, para tal, é preciso criar uma rotina que faça uma varredura em todos os elementos existentes no site, do elemento em questão. No seu caso, o elemento Td (Table Data).
Nesse caso, temos que trabalhar com dois objetos específico: uma coleção de objetos e um objeto único. Vamos atribuir todos os elementos Td da página, para a Coleção de Objetos e, através de um laço, vamos analisar todos os elementos Td dentro desta coleção, através do elemento Objeto Único. Vamos ao código:
Código: Selecionar todos
Dim oElement As Object 'Elemento Único
Dim oElementCol As Object 'Coleção de Objetos
Set oElementCol = IE.Document.getByElementsTagName("td") ' Atribui o grupo elemento Td para a coleção oElementCol
For Each oElement In oElementCol 'Inicia o laço dentro (In) da Coleção (oElementCol)
If oElement.Class = "" Then 'Valida o atributo Class do elemento Td.
oElement.Click 'Clica no elemento Td, onde esta localizado a Seta Próximo.
Exit For 'Força saída do laço For, quando o elemento correto é localizado e clicado.
End If
Next oElement 'Vai para o próximo elemento, até chegar ao último existente na página carregada.
Teste e nos retorne, ok.
Abraços e bom descanso.
Re: Clicar na seta para ir para próxima página
Mikel,
você é um gênio por tornar o código simples com suas explicações. Na verdade, já tinha visto ele em outras pesquisas, mas a explicação era tão confusa que eu achava que não era o que eu queria
Vou testar esse código amanha a tarde
Mas antes, se possível, uma dúvida, que foi a única coisa que não entendi no código:
If oElement.Class = "" Then 'Valida o atributo Class do elemento Td
na linha acima, eu mantenho as aspas sem valor algum mesmo, ou tenho que colocar algo? Como é que o código diferencia a seta de "próxima pagina" da seta "página anterior" ou mesmo da seta "ir para última página"?
Cara, obrigado de novo!
você é um gênio por tornar o código simples com suas explicações. Na verdade, já tinha visto ele em outras pesquisas, mas a explicação era tão confusa que eu achava que não era o que eu queria
Vou testar esse código amanha a tarde
Mas antes, se possível, uma dúvida, que foi a única coisa que não entendi no código:
If oElement.Class = "" Then 'Valida o atributo Class do elemento Td
na linha acima, eu mantenho as aspas sem valor algum mesmo, ou tenho que colocar algo? Como é que o código diferencia a seta de "próxima pagina" da seta "página anterior" ou mesmo da seta "ir para última página"?
Cara, obrigado de novo!
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Clicar na seta para ir para próxima página
Otalívio, boa tarde.
Cara, falha minha. Estava meio que dormindo ontem a noite, que esqueci de completar o código. Com base no elemento Td que você postou:
Essa linha de código tem que ficar assim:
Agora sim, erro corrigido.
Abraços e excelente final de semana.
Cara, falha minha. Estava meio que dormindo ontem a noite, que esqueci de completar o código. Com base no elemento Td que você postou:
Código: Selecionar todos
<td class=" dr-dscr-button rich-datascr-button" onclick="Event.fire(this, 'rich:datascroller:onscroll', {'page': 'next'});">
Código: Selecionar todos
If oElement.Class = " dr-dscr-button rich-datascr-button" Then 'Valida o atributo Class do elemento Td
Abraços e excelente final de semana.
Re: Clicar na seta para ir para próxima página
Mikel,
fiz como vc disse... Mas aparece o erro 438 - O objeto nao aceita esa propriedade ou método nessa linha aqui
If oElement.Class = " dr-dscr-button rich-datascr-button"
:/
usei com espaço entre as aspas e a primeira letra "d".
Usei sem espaço também.
fiz como vc disse... Mas aparece o erro 438 - O objeto nao aceita esa propriedade ou método nessa linha aqui
If oElement.Class = " dr-dscr-button rich-datascr-button"
:/
usei com espaço entre as aspas e a primeira letra "d".
Usei sem espaço também.
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Clicar na seta para ir para próxima página
Otalivio, boa tarde.
Hoje to bem voado. Mas sempre me confundo com esse comando. Não é class e sim className.
Tente dessa forma e nos retorne.
Abraços e excelente final de semana.
Hoje to bem voado. Mas sempre me confundo com esse comando. Não é class e sim className.
Tente dessa forma e nos retorne.
Abraços e excelente final de semana.
Re: Clicar na seta para ir para próxima página
Mikel,
o código não apresenta mais erro. MAS...
ele simplesmente termina e nao passa para a proxima pagina. fiz um debug no laço IF e ele passa por cada elemento da colecao, mas como o elemento nao cumpre a condicao do if, ele faz todo o loop e depois vai para end sub...
Cara, não sei se vou falar besteira... mas e se tentassemos algo com o fim da linha ?
onclick=Event.fire(this, 'rich:datascroller:onscroll', {'page': 'next'});
o código não apresenta mais erro. MAS...
ele simplesmente termina e nao passa para a proxima pagina. fiz um debug no laço IF e ele passa por cada elemento da colecao, mas como o elemento nao cumpre a condicao do if, ele faz todo o loop e depois vai para end sub...
Cara, não sei se vou falar besteira... mas e se tentassemos algo com o fim da linha ?
onclick=Event.fire(this, 'rich:datascroller:onscroll', {'page': 'next'});
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Clicar na seta para ir para próxima página
Otalívio, bom dia.
Sem fazer testes, eu arrisco dois motivos para não ter funcionado:
1º) O elemento Td não esta na própria página, mas sim em uma segunda página aberta por um elemento Iframe;
2º) O valor passado do elemento Td*, esta incorreto.
* <td class=" dr-dscr-button rich-datascr-button" onclick="Event.fire(this, 'rich:datascroller:onscroll', {'page': 'next'});">
Agora, caso nenhuma das sugestões acima resolvam o problema, minha única sugestão seria utilizar o Selenium VBA. Já precisei acessar elementos que utilizam funções JQuery, conforme ocorre nesse caso (Event.fire(this, 'rich:datascroller:onscroll', {'page': 'next'}) e, de nenhuma maneira, consegui manipular um comando JQuery usando o Microsoft Internet Control.
Faça as verificações e testes possíveis. Além disso, pense na possibilidade de mudar de biblioteca, conforme mencionado acima.
Aguardo retorno. Abraços.
Sem fazer testes, eu arrisco dois motivos para não ter funcionado:
1º) O elemento Td não esta na própria página, mas sim em uma segunda página aberta por um elemento Iframe;
2º) O valor passado do elemento Td*, esta incorreto.
* <td class=" dr-dscr-button rich-datascr-button" onclick="Event.fire(this, 'rich:datascroller:onscroll', {'page': 'next'});">
Agora, caso nenhuma das sugestões acima resolvam o problema, minha única sugestão seria utilizar o Selenium VBA. Já precisei acessar elementos que utilizam funções JQuery, conforme ocorre nesse caso (Event.fire(this, 'rich:datascroller:onscroll', {'page': 'next'}) e, de nenhuma maneira, consegui manipular um comando JQuery usando o Microsoft Internet Control.
Faça as verificações e testes possíveis. Além disso, pense na possibilidade de mudar de biblioteca, conforme mencionado acima.
Aguardo retorno. Abraços.
Re: Clicar na seta para ir para próxima página
Mikel,
obrigado mesmo por toda a ajuda.
vou ler sobre o Selenium e ver se consigo baixa-lo (pois há regras de download por causa dos sistemas corporativos).
Não vou fechar ainda esse tópico, pois vou ler sobre o Selenium
Obrigado mesmo pela ajuda!
obrigado mesmo por toda a ajuda.
vou ler sobre o Selenium e ver se consigo baixa-lo (pois há regras de download por causa dos sistemas corporativos).
Não vou fechar ainda esse tópico, pois vou ler sobre o Selenium
Obrigado mesmo pela ajuda!
Re: Clicar na seta para ir para próxima página
Ola, Mikel
Cosnegui instalar o Selenium Type Library no computador do trabalho, mas não tenho permissão para instalar o Wrapper nem o IDE
Consigo apenas com o Selenium Type Library automatizar o IE como eu quero?
Comecei a reescrever o código usando o Selenium e já empaquei numa ação do código:
Consigo abrir o IE e abrir na pagina corporativa. Mas, quando uso o comando sendkeys para colocar a matricula no campo devido, o IE simplesmente fecha, com mensagem que teve um erro, mas não fala que erro é esse. :/
Tentei tb usar a o comando "click", mas o IE tb fecha do mesmo jeito...
Nossa, que dor de cabeça Consigo criar códigos manipulando o AttachmentExtra, mas alguns relatorios sao criados na plataforma WEB...
É dor de cabeça, mas não vou desistir!
Qualquer ajuda é bem vinda!
Abraços e bom fim de semana!
Cosnegui instalar o Selenium Type Library no computador do trabalho, mas não tenho permissão para instalar o Wrapper nem o IDE
Consigo apenas com o Selenium Type Library automatizar o IE como eu quero?
Comecei a reescrever o código usando o Selenium e já empaquei numa ação do código:
Consigo abrir o IE e abrir na pagina corporativa. Mas, quando uso o comando sendkeys para colocar a matricula no campo devido, o IE simplesmente fecha, com mensagem que teve um erro, mas não fala que erro é esse. :/
Tentei tb usar a o comando "click", mas o IE tb fecha do mesmo jeito...
Nossa, que dor de cabeça Consigo criar códigos manipulando o AttachmentExtra, mas alguns relatorios sao criados na plataforma WEB...
É dor de cabeça, mas não vou desistir!
Qualquer ajuda é bem vinda!
Abraços e bom fim de semana!