Automatisation du navigateur - append javascript sur les pages et attendre l'exécution des tâches

StackOverflow https://stackoverflow.com/questions/8303131

Question

J'ai une tâche de saisie de données laid qui a besoin d'automatisation. Le problème est que certains des processus reposent sur les services ajax basés sur le Web qui ont pas d'API.

Le problème avec iMacros (ou tout autre outil d'automatisation) est que chaque fois que les injectent macro JavaScript dans une page (modification callbacks ajax et de faire tout ce qu'il faut faire), le script enfant n'a aucun moyen d'informer le script parent que le tâche est prêt, et laisser poursuivre le processus dans un seul fil. Si j'utilise l'instruction WAIT, la fiabilité sera zéro et il n'y a aucun moyen de mettre en œuvre failsafes.

J'ai essayé tout ce que je pouvais penser, y compris les extensions Chrome, réduire la sécurité du navigateur XSS et même reproduire les demandes par cURL et PHP. Chacun d'entre eux a ses propres limites.

Je suis ouvert à toute solution:

  • peut attendre une page de chargement d'arrivée (événements onLoad)
  • peut modifier le javascript sur cette page particulière, d'interagir avec vars, etc.
  • peut informer l'appelant parent que les sous-tâches sont terminées et les événements appropriés d'incendie
  • prend en charge Flash

Toute alternative et une aide très appréciée.

Était-ce utile?

La solution

Voici un bon article qui est centré sur Sélénium expliquant les différentes façons d'attendre pour ajax demandes à la fin: http: / /agilesoftwaretesting.com/?p=111 .

Ceci est beaucoup plus propre que d'essayer de modifier le JS existant. Tous les éléments suivants peuvent être appelés de javascript directement, afin que vos supports de cadre d'automatisation d'appel javascript (qui Sélénium / WebDriver fait), alors vous suffit d'appeler ces fonctions, selon la ajax bibliothèques de votre site Web utilisent:

jQuery: « jQuery.active »

Prototype: « Ajax.activeRequestCount »

Dojo: « dojo.io.XMLHTTPTransport.inFlight.length »

Il suffit de cocher pour vous assurer que la valeur est 0 et puis continuer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top