Vídeo recomendado
https://youtu.be/diWPPPhW-9E

VBA SELENIUM - HIPERLINKS FINDBYTAG('A') - FRAGMENTANDO LINKS

A Web está aí, não há como negar. Ela é onipresente em praticamente toda operação eletrônica realizada nos dias de hoje. Como não podia ser diferente, o Excel, ferramenta máxima para analistas e profissionais das mais diversas áreas do mercado precisa estar alinhado com esta necesssidade. E ele está! Neste forum, o debate é focado em expor dúvidas, sugestões, modelos de código e exemplos de uso do Excel na Integração com tecnologias Web.
MatheusNNeri
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Ter Nov 30, 2021 7:31 am

VBA SELENIUM - HIPERLINKS FINDBYTAG('A') - FRAGMENTANDO LINKS

Mensagem por MatheusNNeri »

Boa tarde a todos.

Estou desenvolvendo um projeto para minha empresa no qual eu preciso clicar em um botão que contem um hyperlink, porém este elemento não foi bem definido em sua programação. Segue abaixo a inspeção do elemento:
inspeção do elemento desejado
inspeção do elemento desejado
erro3.PNG (15.29 KiB) Exibido 4477 vezes
Logo, utilizando o webdriver selenium com python consegui desenvolver o programa da seguinte forma:
código em python
código em python
erro4.PNG (27.24 KiB) Exibido 4476 vezes
Porém, meu projeto consiste em transformar o script em python para uma macro VBA. Na macro, o programa se encontra da seguinte maneira:
código em VBA
código em VBA
erro2.PNG (17 KiB) Exibido 4477 vezes
Sendo que o resultado na verificação imediata é apresentado a seguir:
Output do código VBA
Output do código VBA
erro1.PNG (120.12 KiB) Exibido 4477 vezes
Como podemos ver, o programa VBA está extraindo os links de forma errada, pois ele está quebrando o link com o id do material em varios links com id em ordem crescente. Como posso corrigir este erro, onde o VBA consegue extrair os links corretamente sem quebrar o link em diversos IDs?

Agradeço atenção de todos


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Raygsson
Manda bem
Manda bem
Mensagens: 118
Registrado em: Sex Jan 31, 2020 8:06 pm

Re: VBA SELENIUM - HIPERLINKS FINDBYTAG('A') - FRAGMENTANDO LINKS

Mensagem por Raygsson »

Você esta complicando algo simples rs
Seguem exemplos em Python e VBA

Código: Selecionar todos

#Pyhton

link = driver.find_element_by_xpath("//a[contains(@href, 'GeraLaudo')]").get_attribute("href")
driver.get(link)

#VBA

link = driver.FindElementByXPath("//a[contains(@href, 'GeraLaudo')]").Attribute("href")
driver.Get link



MatheusNNeri
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Ter Nov 30, 2021 7:31 am

Re: VBA SELENIUM - HIPERLINKS FINDBYTAG('A') - FRAGMENTANDO LINKS

Mensagem por MatheusNNeri »

Agradeço sua resposta. O que complica na realidade é a forma como foi desenvolvido o site.
Além da string "GeraLaudo" eu preciso verificar se o id do material corresponde. Essa parte do programa eu já consegui consertar, porém empaquei no seguinte problema, será que consegue me ajudar?

o programa está da seguinte maneira:

Código: Selecionar todos

    plataforma.Refresh
    Application.Wait (Now + TimeValue("00:00:05"))
    Set allLinks = plataforma.FindElementsByTag("a")
    For Each link2 In allLinks:
        link = link2.Attribute("href")
        Debug.Print link
        compara = InStr(1, link, idmaterial, vbTextCompare)
        Debug.Print idmaterial
        Debug.Print compara
    Next
e a saída do debug.print é a vista na imagem em anexo abaixo.
print1.PNG
print1.PNG (10.5 KiB) Exibido 4425 vezes
Como eu consigo fazer com que seja checado o idmaterial dentro do link, dessa maneira podendo pegar o link que corresponda ao link que desejo?
Minha ideia é colocar a variavel "compara" como condição de um If, mas por algum motivo a função InStr não está retornando corretamente.


MatheusNNeri
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Ter Nov 30, 2021 7:31 am

Re: VBA SELENIUM - HIPERLINKS FINDBYTAG('A') - FRAGMENTANDO LINKS

Mensagem por MatheusNNeri »

Resolvido


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Meltex
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Qui Mai 05, 2022 4:19 pm

Re: VBA SELENIUM - HIPERLINKS FINDBYTAG('A') - FRAGMENTANDO LINKS

Mensagem por Meltex »

MatheusNNeri escreveu: Sex Dez 17, 2021 6:41 amResolvido
Bom dia a todos,

Sei que o tópico foi finalizado já faz um tempo, mas gostaria de saber como você conseguiu ajustar o código para o VBA pois estou passando por um problema semelhante, preciso extrair os links de um site e selecionar apenas os que possuem um mesmo texto em comum na URL, porém o código está puxando todos os links do site e vem uma enorme quantidade e não só os q preciso.

Agradeço a todos.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: VBA SELENIUM - HIPERLINKS FINDBYTAG('A') - FRAGMENTANDO LINKS

Mensagem por webmaster »

Meltex,

Utilizando o FindElementsByTag, todos os elementos serão trazidos a partir do elemento pai. O trabalho de filtro seria feito por você depois disso.

No caso do colega MatheusNNeri foi examente isso:

Código: Selecionar todos

For Each link2 In allLinks:
        link = link2.Attribute("href")
        Debug.Print link
        compara = InStr(1, link, idmaterial, vbTextCompare) 'se o link no href conter o valor de idmaterial
        Debug.Print idmaterial
        Debug.Print compara
Next
Acho que dá para adaptar para o que precisa.

Att


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder