2009-03-04 11 views
7

Dans le mauvais vieux temps des applications de console interactive, Don Libes a créé un outil appelé Expect, qui vous permettait d'écrire des scripts Tcl qui interagissaient avec ces applications, comme le ferait un utilisateur. Attendez-vous eu deux énormes avantages:Existe-t-il un équivalent de l'outil * attend * de Don Libes pour l'interaction de scripts avec des pages Web?

  • Il était possible d'interactions de script qui auraient dû être répétées à la main, fastidieusement. Un exemple classique était l'accès Internet par modem (depuis les jours précédant PPP).

  • Il était possible d'écrire des scripts pour tester ses propres applications interactives, par programmation, dans le cadre d'une suite de régression.

Aujourd'hui, la plupart des applications interactives sont sur le Web, pas sur la console. D'où ma question: existe-t-il un outil permettant d'interagir par programmation avec les pages Web et les formulaires Web, tout comme Expect offre la possibilité d'interagir par programmation avec les applications de la console?

(La chose la plus proche, je suis au courant est Chickenfoot.)

Répondre

5

Je l'ai utilisé Selenium RC conjointement avec Python pour conduire les interactions page Web par programmation. Cela m'a permis d'écrire des tests utilisateur assez poussés dans lesquels les formulaires et les entrées sont pilotés et leurs résultats sont mesurés.

Découvrez l'IDE Selenium sur Firefox (comme mentionné ci-dessus). Il vous permet d'enregistrer des tests dans le navigateur et de les lire, soit en utilisant l'IDE lui-même, soit via l'application Remote Control.

5

Perl Mechanize fonctionne plutôt bien pour ce problème.

HTTPS et certains problèmes d'authentification sont parfois difficiles. Je posterai quelques questions à propos de celles-ci dans le futur.

+0

J'ai parcouru le lien --- y at-il, oserais-je demander, documentation "conviviale"? –

+1

Mechanize est génial, mais vous devez vous rendre compte que ce n'est pas tellement similaire à Expect comme c'est le cas pour le terminal. Err c'était une analogie terrible. Essayons ceci: Mechanize n'automatise pas un navigateur, Mechanize est un navigateur (programmable). Si vous comprenez que cela peut être très puissant, je suis à court d'espace. –

+0

Ouais, c'est un bon point, c'est probablement pourquoi ça devient un peu compliqué quand la page est très complexe car elle peut sembler un peu sur firefox etc, mais mécaniser voit la page "mécanisée" de façon. Mais de toute façon, c'est aussi très facile de programmer avec. –

1

En plus de Selenium, si vous faites la chose Ruby/Rails, il y a Webrat.

+0

Je veux interagir avec des sites arbitraires. Il semble que Webrat ne concerne que les sites implémentés dans Ruby où j'ai accès au code source. Correct? –

5

J'ai fait une tonne de travail Expect dans une vie antérieure et j'ai toujours pensé que le livre Expose de Don Libes était l'un des livres techniques les mieux écrits et les plus instructifs que j'aie jamais vus. Haut de page Je dirais que la bibliothèque WWW :: Mechanize de Perl est ce que vous voulez. Je note ci-dessus que vous aviez du mal à trouver de la documentation. Il y a une bonne documentation pour ça! Rechercher la distribution du module sur search.cpan.org et voir ce qui est emballé avec. Il y a une FAQ, un livre de cuisine avec des exemples, etc. De plus, j'ai toujours été en mesure d'obtenir de l'aide sur le Web. Si vous ne pouvez pas l'obtenir ici, essayez sur use.perl.org ou perlmonks.org. WWW :: L'auteur de Mechanize, Andy Lester, est le present on Stack Overflow. (Il est aussi un gars amical et serviable.)

Je crois que WWW :: Mechanize a aussi un programme qui est analogue au programme d'expect de Expect: vous configurez un processus proxy exécutant ce programme en tant que serveur, pointez votre navigateur comme proxy, effectuez les actions que vous voulez automatiser, puis le programme proxy vous donne un programme WWW :: Mechanize que vous pouvez utiliser comme base pour votre projet. (Si cela fonctionne comme autoexpect, vous voudrez certainement faire des modifications à partir de là.Comme mentionné ci-dessus, WWW :: Mechanize est un navigateur (pour être plus précis, c'est un client web ou un client http) qui est programmable. La dernière fois que j'ai regardé, il y avait même des travaux en cours pour le rendre compatible avec JavaScript.