Usar Selenium para automatizar navegadores

1,340 views
Skip to first unread message

ZeRoberto

unread,
Jul 17, 2020, 9:48:45 AM7/17/20
to publicesvfoxpro
Estuve buscando información de como entrar a la página de la SBS ingresar un DNI y obtener los datos del cliente, en el grupo vi que alguien sugería usar Selenium, pues me puse a buscar selenium en youtube y me encontré con este video, pero veo que lo más cercano para los foxero es crear una librería en C# y jalarlo desde VFP, pero también vi una herramienta llamada Kodnet que permite ejecutar código .Net en VFP.

 
Mi dilema es si usar Kodnet o crear una DLL en el mismo C#

Saludos

Ze

Zarlu

unread,
Jul 19, 2020, 7:47:04 PM7/19/20
to Comunidad de Visual Foxpro en Español
Buenas tardes Foxeros!

Había preparado algo para publicar de Selenium, pero por diversos motivos lo dejé rezagado.
Mis primeras pruebas versan sobre Chrome

Aprovecho éste hilo del colega para comentar al respecto.
*************

Definitivamente lo que hoy les presento no es la automatización de Chrome y esto es por una sencilla razón…Chrome no admite automatización a través de VFP como si es posible con IExplorer. A lo más que podemos aspirar es ejecutar (lanzar) el navegador con la URL deseada y/o mostrarla en un formulario de VFP.


Pero partiendo de información capturada, validada y generada en VFP, y con el apoyo de otras herramientas, es posible ejecutar el navegador, llenar cajas de textos, seleccionar opciones de combos, clickear botones, en fin, interactuar con los elementos de las páginas web. Pero bueno de una u otra forma automatizaremos!!.


La herramienta a la que me refiero es Selenium WebDriver.  Pero requiere de otras aplicaciones. En mi caso elegí Java para desarrollarla.


¿Qué es Selenium? Es una herramienta de testeo. https://www.selenium.dev/


Una breve descripción del proceso que yo desarrollé:

Se crea el código en java  (y el ejecutable) incluyendo las librerías de Selenium y del navegador a utilizar (y las otras requeridas dependiendo de las funciones usadas), se ejecuta Chrome desde VFP pasándole parámetros de usuario y contraseña (en su caso), desde VFP genero un archivo de texto conteniendo por línea los datos a introducir en las cajas de texto. Desde el ejecutable de Java creado se extraen la información de las líneas del archivo de texto y se llenan las cajas de texto.

¿Qué se requiere?

- Ganas de hacerlo

- Kit de desarrollo de Java (jdk-14.0.1_windows-x64_bin.exe para el caso de W64)

- Eclipse (eclipse-inst-win64.exe para el caso de W64)

- Librerías Selenium para Java. No JavaScript (selenium-java-3.141.59.zip )

- Driver del navegador elegido (son ejecutables)

- Tener instalado Java JRE (requerido para ejecutar aplicaciones de Java y que por lo general los pc ya tienen instalado)


Varios lenguajes de programación son compatibles con Selenium Webdriver: Java, .Net, PHP, Python, Perl, Ruby.


Y permite interactuar con diferentes navegadores: Firefox, Internet Explorer, Safari, Opera, Chrome, Edge.


Existe bastante información y tutoriales en la red. Les dejo algunos links de referencia:

Tutoriales:

https://www.tutorialselenium.com/

https://www.tutorialselenium.com/2017/10/20/configurar-eclipse-con-selenium-webdriver/

https://www.youtube.com/watch?v=bOd2i1yPVb4

http://puntocomnoesunlenguaje.blogspot.com/2012/08/el-argumento-args-de-main-en-java.html

https://www.qalovers.com/2019/09/trucos-selenium.html

Java JDK:

https://www.oracle.com/index.html (ver parte inferior Java SE14 download)

Eclipse:

https://eclipse.org/

Librerías Selenium Java y Driver de navegadores (Ver “+Browser” en parte inferior):

https://www.selenium.dev/downloads/


Por favor tomen en cuenta que algunos tutoriales son de años pasados y podrían no coincidir en las versiones que mencionan y situación actual. La sugerencia es usar las versiones recientes.


************************


Para los expertos, o con algún conocimiento, de Java esto resultará “pan comido”.(O bien pudieran elegir otro lenguaje)

Mi intención es aportar algo a aquellos que, como yo, sólo manejamos VFP.

Con la lógica de programación que ya dominamos en VFP tenemos un tramo ganado.

Si bien igual en un aliciente a iniciarse en otras herramientas diferentes de nuestro apreciado zorro.


Les dejo un archivo con un sencillo ejemplo de java que abre una página en Chrome y consulta el valor del dólar de una fecha pasada como parámetro.

Pueden ejecutarlo desde la ventana del DOS (CMD) o desde VFP con el comando RUN


Ejecutar así:

vfp-chrome.jar 05/02/2020&&ejecutable y fecha a consultar en dd/mm/aaaa


Anexo ejecutable, driver de Chrome y el código en Java. Renombrar.

Deben estar en el mismo directorio

chromedriver.dat=chromedriver.exe

vfp-chrome.dat=vfp-chrome.jar


Link de descarga:

https://drive.google.com/file/d/1TlCHE3at6BIK1CPoqvHvDgREcqmF_ea4/view?usp=sharing

https://drive.google.com/file/d/1KaPbVksFeHMPI8VTVBrJFHZysBzjSI7i/view?usp=sharing

https://drive.google.com/file/d/1rVGSHtw5Zx26AMBAfXrQtKveTZ97BT-b/view?usp=sharing


En resumen, sin desanimarlos, es necesario crear un ejecutable en otro lenguaje que "procese" la información de nuestras aplicaciones en VFP.


zarlu

Chetumal, Quintana Roo, México




ZeRoberto

unread,
Jul 19, 2020, 10:44:16 PM7/19/20
to publicesvfoxpro
Hola Zarlu yo hice una DLL en C# la idea es que me abra una pagina en ASP me ingrese un DNI y luego busque el cliente, el resultado me lo debe capturar en un TXT para yo ingresarlo a mi base de datos. Mi libreria hace las 2 primeras cosas abre la página e ingresa el código y le da a consultar pero en el resultado me da un error de conexion y no se a que se debe.

La pagina que deseo consultar

Lo que deseo buscar
osbs1.jpg
osbs2.jpg

Lo que me sale (No logra realizar la consulta es como si se desconectaria)
sbs1.jpg
sbs2.jpg
sbs3.jpg


Saludos 

Ze




--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/6351aa0a-7429-44ee-8966-201281eecfeao%40googlegroups.com.

Zarlu

unread,
Jul 20, 2020, 9:46:49 AM7/20/20
to Comunidad de Visual Foxpro en Español
Buenos días ZeRoberto!

Lamentablemente no todo es miel sobre hojuelas.
Algunas páginas detectan la automatización. (algunas mandan mensaje otras marcan error y no acceden)
Podría ser ese tu caso.

Te dejo un link con algunos comentarios:

No he indagado mucha al respecto, espero que de algún modo se pueda resolver.

Suerte

ZeRoberto

unread,
Jul 20, 2020, 10:55:26 PM7/20/20
to publicesvfoxpro
Hola Zarlu

Pero la primera pagina si me aparece normal, e inclusive me deja poner el DNI, al momento de que la página web hace la consulta es donde sale el error de conexión, en los link que me enviaste la página se bloquea desde el principio, esto parece ser algo diferente, aunque ya probe con todos los navegadores y todos dan con el mismo error.


Saludos

Ze


--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

Zarlu

unread,
Jul 21, 2020, 9:02:07 AM7/21/20
to Comunidad de Visual Foxpro en Español
Buenos días ZeRoberto!

No siempre es el navegador, son las páginas que detectan la automatización.
El error o bloqueo es cuando se accesa a la información (login, consultas...)
Hice pruebas con la página de Google y con tu link y es la situación.
En otras no hubo problemas.
De hecho en Chrome desde que lanzas el navegador te sale un mensaje de que esta siendo controlado por automatización

James Suárez

unread,
Jul 27, 2020, 3:39:23 AM7/27/20
to publice...@googlegroups.com
No se deje desanimar
Yo trabajo mucho en el área de automatización a diario (por ejemplo en mi producto waba que es un api de WhatsApp )

La realidad es diferente a la que pintan los compañeros anteriores.

Casi ninguna página por no decir ninguna, es capaz de detectar que se está usando una navegador automatizado. Justo ese es el propósito de librerías como selenium, nightmare, puppeteer, y otras. De hecho la advertencia de que 'está usando un navegador automatizado' no es una advertencia del sitio web de Google sino es propia del navegador que se abre con unos parámetros específicos para permitir la comunicación. Por tanto, la presencia de ese mensaje no significa que los sitios web fácilmente detecten que es un navegador automatizado (sino piense cual sería la gracia de esas librerías? ). Así que por ese lado no se preocupe.


Que puede estar pasando entonces?

- Está dando clic a un botón que no es (por ejemplo el selector que usa para clickear el. Botón o el formulario está en realidad resolviendo a algún botón oculto)

- esta accediendo desde un país diferente. Esto suele pasar mucho con los sitios del gobierno. Ejemplo Cuando yo intentaba hacer automatización desde algún vps, el website cerraba la conexión porque parece que le daba prioridad a consultas desde el mismo país 

- está ejecutando algún otro código antes de acabar la opción que desea. Esto pudiera pasar si la librería es asíncrona y el código no está correctamente esperando a que acabe cada acción. 

Eso se me ocurre. Otra cosa que pudiera hacerse, es que en lugar de automatizar el navegador, al ser un sitio sencillo podría hacer los request directamente como lo haría un navegador pero sin la sobrecarga de ejecutar un navegador. En muchas ocasiones esto funciona. Solo es cuestión de analizar minuciosamente los requests del sitio web. 



--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

James Suárez

unread,
Jul 27, 2020, 3:45:04 AM7/27/20
to publice...@googlegroups.com
Por cierto yo soy el creador de kodnet y sí, pues si usted está haciendo la librería en c# kodnet es una excelente opción para integrar fácilmente en vfp. En el repo hay un código de ejemplo que muestra como cargar ensamblados. 

ZeRoberto

unread,
Jul 28, 2020, 12:56:43 AM7/28/20
to publicesvfoxpro
Hola James gracias por contestar, la verdad intente con todos los navegadores y nada todos llegan al mismo resultado pero lo que dices que puede estar activando otro evento aun no lo he revisado.

Saludos

Ze



James Suárez

unread,
Jul 28, 2020, 1:24:39 AM7/28/20
to publice...@googlegroups.com
Sabe que me dio por revisar la página, y ya vi cual es un detalle que no ha tenido en cuenta. Esa página tiene recaptcha invisible. Mientras usted no use algo para pasar el recaptcha no va a poder.
Fíjese que si usted abre un navegador que lo usa todo el tiempo, pues generalmente recaptcha se autocompleta solo, pero usando un navegador automatizado esto no pasa, y tendría que usar algún servicio para resolverlo, y en su código de automatización manejar correctamente esto.


Zarlu

unread,
Aug 1, 2020, 2:00:49 PM8/1/20
to Comunidad de Visual Foxpro en Español
Buenos tardes ZeRoberto!

No sé si todos los navegadores detectan la automatización, pero Chrome en particular hasta muestra mensaje.
Y definitivamente algunas páginas detectan la automatización incluyendo código para detectarlo.

Haz logrado algún progreso para brincar el recaptcha de la página de tu interés?

He notado que si el código de automatización se interrumpe por un error (Clickear el botón sin dato a buscar) se puede tomar el control manual y funciona la búsqueda.
Estoy tratando de retomar el código después de provocar el error. Algo así como el "Retry" en VFP. Lamentablemente soy completamente novato en Java.
Te hago saber por si en C# lo quieres intentar.

No he encontrado nada que lo resuelva con Selenium-Java

Te comento (Sólo comentario)....
Con un código en Java y tu página funcionó en algunas ocasiones, pero no logro detectar lo que lo origina.

James Suárez

unread,
Aug 1, 2020, 3:01:47 PM8/1/20
to publice...@googlegroups.com
Voy a dar una explicación para que quede claro ese tema:

Las páginas web no pueden detectar que es un navegador controlado por código. Por eso optan por colocar cosas como recaptcha para que sea más difícil hacer  algo automatizado, pero de ahí  no hay manera oficial de saberlo.  Se preguntarán porque recaptcha no pide completar la validación en el navegador normal y si en el automatizado es simple, Lo que hacen páginas como recaptcha es que por medio de las cookies pueden saber si el navegador es de uso común o no, si está logueado en la cuenta de Google o no, y ahí es donde deciden si obligar a hacer la validación. Las cookies no dependen si el navegador es automatizado o no, así que esto mismo pasaría si usara un perfil vacío en un navegador normal. 

Chrome detecta que es un navegador automatizado: pues claro, Chrome te muestra el mensaje para que la persona que ve el navegador sepa que el navegador está siendo automatizado, ya que para permitir automatizar Chrome se abre con unos parámetros específicos pues por defecto no lo permite. Eso es solo una advertencia del navegador, y no tiene nada que ver con las páginas web que se abran las cuales no tienen manera de saber si es automatizado o no.

Saltar el recaptcha es posible, pero con servicios de pago. 

--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

ZeRoberto

unread,
Aug 2, 2020, 7:04:17 PM8/2/20
to publicesvfoxpro
Hola Zarlu yo ya tengo hecho la dll en C# pero como vuelvo a repetir parece que se interrumpe la conexión y al dar click en consultar, anteriormente tambien tenia problemas cuando no cargaba bien el captcha usando el WebBrowser pero me salia un mensajito que decía "Acceso erróneo o acceso sospechoso" pero no me daba problema de conexión.

Saludos

Ze





--

ZeRoberto

unread,
Aug 2, 2020, 7:15:42 PM8/2/20
to publicesvfoxpro
Hola James y como hace para detectar que no se lleno el captcha y automaticamente desconectarse

Saludos

Ze



Reply all
Reply to author
Forward
0 new messages