J'essaie d'automatiser la connexion à un site Web et la soumission d'un formulaire.
Existe-t-il un plug-in de navigateur (pour Firefox ou Chrome) vous permettant d'enregistrer les demandes HTTP GET et POST sous une forme leur permettant d'être lues ultérieurement? Je cherche quelque chose qu'il sera possible d'automatiser à partir d'un script, par exemple. via curl ou wget.
J'ai essayé d'utiliser les outils de développement Chrome pour capturer les données de formulaire POST, mais des erreurs se produisaient lorsque je tentais de répliquer la demande avec wget, ce qui suggère que des cookies ou d'autres paramètres sont manquants. Idéalement, il y aurait une bonne façon automatisée de faire cela plutôt que de faire beaucoup d'essais et d'erreurs.
Pour une interaction simple, vous n'avez pas vraiment besoin d'un outil comme Selenium pour enregistrer et lire les requêtes.
Vous n'avez besoin que des outils que vous avez déjà mentionnés:
curl
et wget
prennent en charge les cookies et POST data, mais j'ai seulement essayé curl pour l'automatisation.Plusieurs étapes clés doivent être effectuées correctement (cela nécessite de l'expérience):
curl
et wget
afin de vous assurer que les cookies et les redirections sont correctement traités.Voici un échantillon de 3 appels curl que j'ai écrits pour un script d'automatisation que j'ai écrits pour télécharger l'utilisation du haut débit à partir de mon fournisseur de services Internet:
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
Notez l'utilisation prudente de --cookie-jar
, --cookie
et --location
. Les sleep
s, --user-agent
et --referer
peuvent ne pas être nécessaires (le backend peut ne pas être vérifiés), mais ils sont assez simples pour que je les inclue afin de minimiser le risque d'erreur.
Dans cet exemple, j’ai eu de la chance qu’il n’y ait pas de champs dynamiques POST, par exemple. champs nonce anti-CSRF, que j’aurais dû extraire et transmettre à une requête ultérieure. C'est parce que cette automatisation est pour l'authentification. Pour automatiser d'autres types d'interactions Web, une fois que l'utilisateur est déjà connecté, vous risquez de rencontrer davantage de ces champs générés dynamiquement.
Pas exactement un plugin de navigateur, mais Fiddler peut capturer toutes les données HTTP échangées; avec FiddlerScript ou FiddlerCore , il est alors simple de exporter cela dans un fichier texte - et de le transférer dans cURL en tant qu'en-têtes et corps de demandes.
Dans Firefox, activez l'option Persist dans Firebug pour vous assurer de capturer le POST. Puis installez et utilisez le "Bookmark POST" add-on pour mettre en signet la demande POST pour une utilisation ultérieure.
Firefox Firebug a déjà une fonctionnalité qui vous permet de copier une requête Web en tant que requête curl, de sorte que vous puissiez voir tous les divers éléments de la requête sur la ligne de commande.
Allumez le Firebug, cliquez avec le bouton droit de la souris sur une requête du panneau Réseau et choisissez Copier en tant que cURL. Puis utilisez-le dans curl
https://hacks.mozilla.org/2013/08/firebug-1-12-new-features/#copyAsCURL
Avez-vous essayé sélénium ?
Il y a beaucoup trop de méthodes à choisir.
Utilisez Firefox et Selenium IDE. Il peut enregistrer l'action de votre navigateur
Pilote Web utilisateur Selenium. Il peut simuler différentes actions du navigateur par le script que vous écrivez en Ruby ou en Java.
Utilisez un plugin macro pour Firefox pour simuler des clics absolus et des pressions de touche.
Utilisez une application macro au niveau du système d'exploitation et procédez de la même manière que 3.
Écrivez un script (tel que PHP) pour simuler les interactions de publication de formulaire ou de cookie.
No.1 est commun et facile à utiliser. No.4 peut être puissant, mais vous avez besoin de temps pour peaufiner l’automatisation.
No.3 est au milieu du n ° 4 et n ° 1. . N ° 2 peut être un outil pour les tests d'environnement et les tests de résistance. économie.
Récemment, j'ai traversé cette belle extension chromée qui fait ce que vous demandez: Katalon Recorder
Katalon Recorder facilitera grandement l'automatisation de vos tests.
Enregistrement, lecture, débogage avec contrôle de la vitesse, pause/reprise, capacités des points d'arrêt.
Profitez de la vitesse d'exécution la plus rapide par rapport aux autres extensions avec le moteur central Selenium 3.
Utilisez plusieurs types de localisateurs, notamment XPath et CSS.
Utilisez les commandes Selenium IDE d'origine (Selenese), ainsi que l'instruction block si ... elseIf ... else ... endIf et while ... endWhile. Test du contrôle d'entrée de fichier est pris en charge.
Importer des données de test à partir de fichiers CSV pour des tests pilotés par les données.
Rapportez facilement avec les journaux, les captures d'écran, avec les données historiques et les analyses de Katalon Analytics.
Composez et organisez des cas de test dans des suites. Ne perdez jamais votre travail avec la fonction de sauvegarde automatique.
Importez les tests Selenium IDE d'origine (extension Firefox).
Exportez les scripts Selenium WebDriver dans les cadres suivants: C # (MSTest et NUnit), Java (TestNG et JUnit), Ruby (RSpec), Python (unittest), Groovy (Katalon Studio), Robot Framework et XML.
Le plug-in chrome de Request Maker fait cela . https://chrome.google.com/webstore/detail/request-maker/kajfghlhfkcocafkcjlajldicbikpgnp?hl=fr
Les outils de développement Safari et Firebug suffisent à vos besoins.