http forms post automation

Graba mensajes de formulario http a través de un navegador



forms post (9)

Estoy tratando de automatizar el inicio de sesión en un sitio web y el envío de un formulario.

¿Hay un complemento de navegador (para Firefox o Chrome) que le permita registrar las solicitudes HTTP GET y POST en un formulario que les permita ser reproducidas en un momento posterior? Estoy buscando algo que sea posible automatizar desde un script, por ejemplo, mediante curl o wget.

Intenté usar las herramientas de desarrollador de Chrome para capturar datos de formulario POST, pero recibo errores al tratar de replicar la solicitud con wget, lo que sugiere que me faltan algunas cookies u otros parámetros. Lo ideal sería una buena forma automática de hacer esto en lugar de hacer muchas pruebas y errores.




En Firefox, active la opción Persistir en Firebug para asegurarse de capturar el POST . A continuación, instale y utilice el complemento "Marcar POST" para marcar la solicitud POST para su uso posterior.


Firefox Firebug ya tiene una función que le permite copiar una solicitud web como una solicitud curl, para que pueda ver todos los diversos elementos de la solicitud en la línea de comandos.

Encienda el Firebug y haga clic derecho en una solicitud en el panel de red y seleccione Copiar como cURL. A continuación, utilícelo en el curl https://hacks.mozilla.org/2013/08/firebug-1-12-new-features/#copyAsCURL


Hay demasiados métodos para que usted elija.

  1. Use Firefox y selenio IDE. Puede registrar la acción de su navegador

  2. Usuario Selenium Web Driver. Puede simular diferentes acciones del navegador mediante el script que escribe en Ruby o Java.

  3. Utilice un complemento macro para Firefox para simular clics y pulsaciones de teclas absolutas.

  4. Use una aplicación de macro de nivel de sistema operativo y haga lo mismo que 3.

  5. Escriba un script (como PHP) para simular la publicación del formulario real o las interacciones de las cookies.

No.1 es común y fácil de usar. No.4 puede ser poderoso, pero necesita tiempo para pulir la automatización.
No.3 está en el medio de No.4 y No.1. No.2 puede ser una herramienta para pruebas ambientales y pruebas de estrés también. No.5 parece ser el más flexible y el ahorro de recursos.


Las herramientas de desarrollador de Safari y Firebug son suficientes para sus necesidades.


No es exactamente un complemento de navegador, pero Fiddler puede capturar todos los datos HTTP que pasan de ida y vuelta; con FiddlerScript o FiddlerCore , es simple export a un archivo de texto y pasarlo a cURL como encabezados de solicitud y cuerpo de solicitud.


Para una interacción simple, realmente no necesita una herramienta como Selenium que grabe y reproduzca las solicitudes.

Solo necesitas las herramientas que ya has mencionado:

  1. Chrome ya viene con las herramientas de desarrollo que necesita: use la pestaña Red. Sin complemento para descargar. No sé si Safari funcionará; no veo una pestaña de "Red" en sus Herramientas de desarrollo.
  2. Tanto curl como wget admiten cookies y datos POST, pero solo he intentado curl para la automatización.

Hay varios pasos clave que deben realizarse correctamente (esto requiere cierta experiencia):

  1. La secuencia de páginas solicitada necesita modelar la interacción real del usuario. Esto es importante porque no tiene idea exactamente cómo el backend maneja las formas o la autenticación. Aquí es donde entra la pestaña Red de las Herramientas para desarrolladores de Chrome. (Tenga en cuenta que hay un botón de "registro" que evitará que se borre el registro). Cuando se prepare para registrar una interacción real del usuario para su análisis, no olvide borre sus cookies al comienzo de cada sesión.
  2. Debe usar todas las opciones correctas de curl y wget que aseguren que las cookies y los redireccionamientos se procesen correctamente.
  3. Es probable que deba enviar todos los campos de formulario POST (a menudo verá campos con valores nonce para evitar CSRF

Aquí hay una muestra de 3 curl calls que escribí para un script de automatización que escribí para descargar el uso de banda ancha de mi ISP:

curl / --silent / --location / --user-agent "$USER_AGENT" / --cookie-jar "$COOKIES_PATH.txt" / ''https://idp.optusnet.com.au/idp/optus/Authn/Service?spEntityID=https%3A%2F%2Fwww.optuszoo.com.au%2Fshibboleth&j_principal_type=ISP'' >$USAGE_PATH-1.html 2>&1 && sleep 3 && # --location because the previous request returns with a series of redirects "302 Moved Temporarily" or "302 Found" curl / --silent / --location / --user-agent "$USER_AGENT" / --cookie "$COOKIES_PATH.txt" / --cookie-jar "$COOKIES_PATH.txt" / --referer ''https://idp.optusnet.com.au/idp/optus/Authn/Service?spEntityID=https%3A%2F%2Fwww.optuszoo.com.au%2Fshibboleth&j_principal_type=ISP'' / --data "spEntityID=https://www.optuszoo.com.au/shibboleth&j_principal_type=ISP&j_username=$OPTUS_USERNAME&j_password=$OPTUS_PASSWORD&j_security_check=true" / ''https://idp.optusnet.com.au/idp/optus/Authn/Service'' >$USAGE_PATH-2.html 2>&1 && sleep 1 && curl / --silent / --location / --user-agent "$USER_AGENT" / --cookie "$COOKIES_PATH.txt" / --cookie-jar "$COOKIES_PATH.txt" / --referer ''https://www.optuszoo.com.au/'' / ''https://www.optuszoo.com.au//r/ffmu'' >$USAGE_PATH-3.html 2>/dev/null

Tenga en cuenta el uso cuidadoso de --cookie-jar , --cookie , y --location . Los sleep s, --user-agent --referer y el --referer pueden no ser necesarios (el servidor puede no verificar) pero son lo suficientemente simples como para incluirlos y minimizar la posibilidad de errores.

En este ejemplo, tuve la suerte de que no hubiera campos POST dinámicos, por ejemplo, campos nonce anti-CSRF, que habría tenido que extraer y pasar a una solicitud posterior. Eso es porque esta automatización es para autenticación. Para automatizar otros tipos de interacciones web, después de que el usuario ya haya iniciado sesión, es probable que se encuentre con más de estos campos generados dinámicamente.


Recientemente, camine a través de esta hermosa extensión de cromo que hace lo que le pides: Katalon Recorder

Katalon Recorder hará que su automatización de prueba sea mucho más fácil.

  • Grabar, reproducir, depurar con las funciones de control de velocidad, pausa / reanudación, puntos de interrupción.

  • Disfruta de la velocidad de ejecución más rápida en comparación con otras extensiones con el motor Selenium 3 core.

  • Haga uso de múltiples tipos de localizadores incluyendo XPath y CSS.

  • Utilice los comandos IDE originales de Selenium (Selenese), además de la instrucción block si ... elseIf ... else ... endIf y while ... endWhile. El control de entrada de archivos de prueba es compatible.

  • Importe datos de prueba de archivos CSV para pruebas basadas en datos.

  • Informe fácilmente con registros, captura de capturas de pantalla, con datos históricos y análisis de Katalon Analytics.

  • Componer y organizar casos de prueba en suites. Nunca pierda su trabajo con la función de autoguardado.

  • Importe pruebas originales de Selenium IDE (extensión de Firefox).

  • Exporte guiones Selenium WebDriver en estos marcos: C # (MSTest y NUnit), Java (TestNG y JUnit), Ruby (RSpec), Python (unittest), Groovy (Katalon Studio), Robot Framework y XML.