Como trabajar con selenium y vba

Vengo trabajando con macros y web me recomendaron selenium pero desconozco de este tema ya que puedo trabajar con chrome en vez de explorer deseo ingresar una pagina web

link: https://e-menu.sunat.gob.pe/cl-ti-itmenu/MenuInternet.htm?pestana=*&agrupacion=* 

Dese que cuando ingrese los datos desde la macro en excel se ejecute la web y se pueda loguear lo hice antes con IE pero me parece mucho trabajo como se puede hacer con selenium

Respuesta
1

Esa página me va lenta weeee.

Mira: Video demo

Este es el código, obviamente no me deja entrar porque no tengo cuenta.

PD: En la pregunta anterior te había dicho que se podía usar .Value, ando falta de practica, el .Value no sirve, debes usar .SendKeys.

Este es el código:

Public Chrome As New ChromeDriver
Sub login()
Chrome.Get "https://e-menu.sunat.gob.pe/cl-ti-itmenu/MenuInternet.htm?pestana=*&agrupacion=*"
Chrome. FindElementById("btnPorRuc"). Click
Chrome. FindElementById("txtRuc"). SendKeys "Prueba"
Chrome. FindElementById("txtUsuario"). SendKeys "UsuarioP"
Chrome. FindElementById("txtContrasena"). SendKeys "Pass123"
Chrome. FindElementById("btnAceptar"). Click
End Sub

Si te fijas en el vídeo abajo tengo una macro que dice Chrome.Quit

Es importante matar el proceso de esa forma. Mientras vas haciendo pruebas, al cerrar la ventana de chrome, corre esa macro para bajar las referencias del objeto a 0 y destruirlo, de lo contrario se queda en la memoria y luego da error.

En Selenium, siempre que terminas de hacer el trabajo, debes usar el método .Quit

Eso es importante.

Genial se acorto mi trabajo con la carga lo acople un poco al modelo que tengo y funciona normal en el caso cuando me logeo en la pagina me sale una opciones como empresa o personal dentro de un container ahí es donde me quedo no se como ingresar al container y seleccionar las opciones para que la macro me lleve hasta la opción que deseo. llegar hasta donde dice empresa, comprobante de pago, see-sol, boleta de pago y emitir boleta de pago

Public Chrome As New ChromeDriver

Sub login()
Chrome.Get "https://e-menu.sunat.gob.pe/cl-ti-itmenu/MenuInternet.htm?pestana=*&agrupacion=*"
Application.Wait (Now + TimeValue("00:00:01"))
Chrome.FindElementById("btnPorRuc").Click
Chrome.FindElementById("txtRuc").SendKeys Range("E6")
Chrome.FindElementById("txtUsuario").SendKeys Range("E8")
Chrome.FindElementById("txtContrasena").SendKeys Range("E10")
Chrome.FindElementById("btnAceptar").Click
End Sub

Ayudarte así solo viendo las fotos es complicado. Esto lo vas a ir comprendiendo con la practica, al principio me pasaba igual. Debes tener algún conocimiento básico de HTML.

La cosa es que, para llegar a un elemento, debes ir uno por uno desde el padre, del padre, del padre, hasta llegar al que buscas

Chrome. BuscaLoMasAltoEnLaJerarquia. LoQueSigue. LoQueSigue. Ect. Ect

Esa linea es solo un concepto, ¿vale?

En una pagina web, pocas veces los elementos tienen IDs (solo se usa ID para JavaScript), lo que si tienen siempre son clases, pero en desarrollo web, muchos elementos pueden tener la misma clase, por eso hay que apuntarle exactamente al que es, comenzado a buscar desde sus elementos padres.

si logro ingresar hasta cierta parte ya tengo algunos ID pero se queda en uno de ellos y me sale este error justo en la linea que dice marca con error esta es la sentencia del html es la misma que las otras opciones anteriores. logro ingresar hasta la que dice nivel2_11_5 luego la que sigue se detiene y me sale el error.

Tiene un atributo CSS de display=none

Y el mensaje de error te lo esta diciendo, dice ElementNotVisible en español significa Elemento no es visible.

Ese elemento no lo ves en el diseño de la web, ¿por qué lo quieres usar? ¿Qué es lo que intentas hacer?

Otra cosa, con selenium puedes hacer bucles. Veo que estas poniendo uno por uno. Si te fijas en el Intelisense de selenium veras que hay .FindElementBy... y también hay .FindElementsBy...

Uno es singular y el otro es plural, osea puedes trabajar con varios elementos de la misma clase, o etiqueta al mismo tiempo y hacer un bucle por cada uno.

¿No hay forma de que yo pueda entrar a esa pagina para ayudarte mejor?

¡Gracias! No me había dado cuenta si tienes un correo para poder conversar más tranquilo para hacer unas consultas y ver donde puedo ver las sentencias del selenium se ve muy interesante

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas