Foro VBATotal

Aprender a programar en Visual Basic

Por favor, o Registro para crear entradas y debates.

Macro rellenar formulario web con selenium+chrome

Buenas!

Una vez más estoy con otra nueva y apasionante aventura, esta vez quiero que desde una hoja de Excel se conecte a varias webs rellenando sus formularios con los valores de las celdas, como Internet Explorer está obsoleto, de momento he encontrado que con el driver selenium se puede hacer sobre Chrome u otro navegador, por lo que he ido viendo hay que localizar los inputbox de las webs con el modo desarrollador , localizarlas desde vba y guardarlas en una variable e indicarle los valores para que rellene los formularios, tampoco he encontrado mucho contenido por internet para hacer esto con vba, para phyton si que hay y sinceramente esto ya me queda muy muy grande así que @administrador te lanzó el guante ;😉 para que si te parece bien hagas una máster class sobre esto en el curso y así aprendemos

Aprovecho para felicitarte por esta maravillosa iniciativa y darte las gracias por toda la sabiduría que compartes con los que seguimos tus publicaciones

Hola Sergio!

Es algo que no he hecho nunca...pero nunca es tarde!

Dime alguna web con formulario para hacer pruebas 🙂

Buenas!

Esta tiene buena pinta, tiene de todo y el código parece claro, por lo menos al inspeccionarlo pone claramente los campos que por lo que he visto en otras es un logro, adjunto recorte

https://familia.jcyl.es/web/es/mujer/formulario-buenas-practicas.html

Y aquí explican muy bien para instalar y configurar Selenium

Cómo hacer data scraping con VBA y Selenium

Gracias por todo!!

 

Archivos subidos:
  • Tienes que conectarte para acceder a las subidas.

Gracias Sergio.

Cuando termine un par de proyectos me pongo con esto. Te pido paciencia 😉

Saludos.

Buenos días. Ante todo pido perdón por si cometo un error ya que no soy experto.

Después de muchas pruebas he conseguido automatizar tareas con vba y chrome. Para esto es necesario instalar SeleniumBasic

https://github.com/florentbr/SeleniumBasic/releases/download/v2.0.9.0/SeleniumBasic-2.0.9.0.exe

Al instalarlo nos fijamos en la ruta donde queda instalado. Ahí tendremos que pegar el driver descomprimido (en este caso versión 111.0 de chrome)

https://chromedriver.storage.googleapis.com/111.0.5563.64/chromedriver_win32.zip

En el editor de visualbasic, Herramientas, Referencias, marcar Selenium Type Library

El código de vba quedaría parecido a esto:

'********************************************************************

Dim hacienda As String      'formulario que voy a rellenar, modelo 046 de hacienda Castilla La Mancha

hacienda = "https://modelos-tributos.jccm.es/webgreco/modelos/jsp/cumplimentacion/GreJspModelo046_2012_P.jsp"

Dim dia As String         'esta variable la utilizaremos para insertar el día de la fecha

dia = Day(Date)

 

Dim driver As New WebDriver

Set driver = New Selenium.ChromeDriver

'El formulario tiene un textbox llamado fechaDevengoDia dónde insertaremos el día. 

driver.FindElementByName("fechaDevengoDia").SendKeys dia

'Si se trata de una lista desplegable llamada selectCentro, para seleccionar Agricultura, debemos enviar el valor AG. Esto lo vemos en el código fuente de la página

Dim sele1 As Selenium.SelectElement

Set sele1 = driver.FindElementByCss("#selectCentro").AsSelect
sele1.SelectByValue "AG"

'Si el formulario tiene un botón llamado btnCumplimentar que tenemos que clicar

driver.FindElementByCss("#btnCumplimentar").Click

driver.Close

 

Espero haberte ayudado, aunque sea un poquito.

Duniesky ha reaccionado a esta publicacion.
Duniesky

Perdón, se me había olvidado después de

Set driver = New Selenium.ChromeDriver

driver.Get hacienda

Muchas gracias por tu aporte @sanguindangui 😉

A ver si @sergio lo prueba y nos cuenta.

Hola, estoy intentando rellenar un formulario Chrome y el aporte de @sanguindangui me sirvió de mucho, Lo adapté a mi caso y me quedó así:

Sub RellenarFormChrome()
Dim PagChrome As String
Dim driver As New WebDriver
Dim Nombre As String
Dim Correo As String
Dim Telefono As String
PagChrome = "https://excelcute.com/formulario-de-video-youtube/"
Set driver = New Selenium.ChromeDriver
driver.Get PagChrome
Nombre = "Duniesky"
Correo = "duniesky.bermudez@etecsa.cu"
Telefono = "+5352884420"
Call Excel.Application.Wait(DateAdd("s", 15, Now()))
driver.FindElementByName("g5154-nombre").SendKeys Nombre
driver.FindElementByName("g5154-correoelectrnico").SendKeys Correo
driver.FindElementByName("g5154-nmerodetelfono").SendKeys Telefono
Dim sele1 As Selenium.SelectElement
Set sele1 = driver.FindElementByCss("#g5154-cmonoshasconocido").AsSelect
sele1.SelectByValue "TV"
Call Excel.Application.Wait(DateAdd("s", 30, Now()))
driver.Close
End Sub

pero cuando ejecuto, se detiene en la línea marcada en rojo y me describe el error como:

ElementNotVisibleError

element not interactable: Element is not currently visible and may not be manipulated

@sanguindangui o algún otro me pudiera ayudar a resolver este problema.

También si fueran tan amables, me pudieran decir si puedo escribir sobre una página abierta previamente.

Gracias de antemano.

 

Hola Duniesky. He probado con FindElementById, FindElementByName, FindElementByTag, FindElementByClass, pero soy incapaz de solucionar el problema, parece más de programación CSS que de VBA. A ver si alguien que maneje CSS nos ayuda.

 

Gracias @sanguindangui. He probado todas las formas sin resultados. Por otro lado me sigue quedando la duda, es posible rellenar un formulario de Chrome en una página abierta previamente, es decir que VBA no la abra sino que se conecte a una abierta.

Pues yo no consigo arrancar el driver de Selenium. Me da error el script.

Archivos subidos:
  • Tienes que conectarte para acceder a las subidas.

La versión de chrome es la misma que el driver?

 

Archivos subidos:
  • Tienes que conectarte para acceder a las subidas.

Si, la misma

Contacto