Hola Gente!
Les consulto, trabajo en un laboratorio y tengo que conseguir completar datos de un formulario web con el dato del peso que mide una balanza analítica. Cada muestra ocupa una fila y una de las columnas tiene el dato de la pesada (son 2 columnas, el peso antes y después del ensayo).
Se me ocurre hacer un programa que lea el puerto serie de la balanz (pyserial) y envíe el dato al formulario por medio de selenium. Nunca lo he utilizado, pero se me ocurre que ubicaría el puntero del mouse en la primera muestra y después de cada lectura le mando un arrow down para que ubique en la siguiente celda de formulario a completar.
Es correcto este aprouch?
Agradezco cualquier comentario o sugerencia.
Muchas gracias!
Hola,
La respuesta más acertada depende de varias cosas, lo de leer el dato
con pyserial está perfecto, lo de enviar el dato con selenium, depende
de como esté conformada la web donde queres cargar las cosas. Si es un
sitio complejo que usa mucho ajax, por ahi conviene selenium, si es un
sitio simple, podes usar requests o scrappy. Tendrias que fijarte de ese
sitio si usa javascript/ajax, si podes directamente por POST enviar el
resultado del formulario (pudiendo o no pedir el formulario primero con
otra llamada de requests, para obtener el valor de campos como crsf por
ejemplo), o si esa pagina tiene clases, tags o ids conocidos para
encontrar los imputs a llenar.
Saludos,
Javier.
Hola Javier
La web está hecha con React y JQuery en frontend y Tryton ERP en backend. Son Formularios de Tryton, en realidad no se hace un post sino que se graba y se cierra.
Estoy husmeando el html a ver si distingo dónde están los ids de los cuadros de texto/datos, pero no veo nada útil. No sé si tendría que usar Selenium IDE para examinar mejor el html.
Sdos
Luis
Conseguí identificar la primera celda de la columna:
div class=“TableEvenRow numberCell editedRow editableGrid” style=“height: 40px; left: 1420px; position: absolute; top: 0px; width: 200px;” div class=“field-with-icon” style=“width: 100%;”><input class=“field-grid-base” type="" value="" style=“text-align: right;” /div <strong class=“copyDrag” style=“touch-action: none; transform: translate(0px, 0px);”.</div
Y la segunda:
div class=“TableOddRow numberCell rowHovered editableGrid” style=“height: 40px; left: 1420px; position: absolute; top: 40px; width: 200px;”></div
El editor de texto le trae problemas con los divs
Me respondo a mi mismo. Creo que la solución es infinitamente más simple y consiste en leer el puerto serie y luego emular el ingreso por teclado con autopy, previo parsing de la info leida del puerto serie. Los campos a rellenar están uno debajo del otro y basta con agregar un intro para pasar al siguiente campo.
Sdos