2008-09-17 647 views
23

Estoy tratando de simplificar algunas de nuestras tareas en mi lugar de trabajo, y parece que gran parte del tiempo de nuestros desarrolladores se dedica a tareas semi-mecánicas en la web (específicamente, la edición de tiendas en línea que utilizan web- interfaces basadas). Como tal, he estado buscando algunas soluciones que permitan que estas tareas las realicen los scripts, ya que supongo que eso nos podría ahorrar bastante tiempo por tarea. Entonces, antes de empezar a profundizar en alguno de estos, me preguntaba si la comunidad de Stack Overflow tenía alguna recomendación sobre qué solución web de scripting/macro sería la mejor.¿Cuál es la mejor manera de hacer scripts web/macros web?

Éstos son los requisitos:

  • debe ser capaz de interactuar con los formularios web (no sólo la descarga de una página y raspando el archivo - el script debe editar los controles en un formulario web y luego enviar esa forma)
  • Los formularios que tenemos que editar son seguros, por lo que la solución de scripting debe ser capaz de manejar eso (es decir, no sirve para nosotros tener una solución de scripting increíblemente poderosa si un ser humano tiene que sentarse y mirarla y volver a iniciar sesión manualmente cada pocos minutos)
  • Sería muy, muy, realmente preferible si pudiera volver ad local files y hacer algunos cambios/manipulaciones de cadenas básicas en ellos (p. sería bueno tener una lista de variables o algún código HTML en un archivo de texto y luego tener la escritura de reemplazar el token "storename" con el nombre de esa tienda en particular antes de que se inserta el código en el formulario)

Aquí son las soluciones de secuencias de comandos que se encuentran en mi radar hasta el momento (realmente no he mirado en cualquiera de estos, aunque he jugado un poco con Chickenfoot):

  • Chickenfoot
  • iMacros for Firefox
  • libwww-perl
  • libwww para UNIX y C (durante la búsqueda de libwww para Perl me encontré con este, que yo no sabía que existían hasta ahora)
  • una solución macro más "general" como AutoHotKey

Alguien aquí en Stack Overflow intentó alguna de estas soluciones? Si es así, ¿qué te gustó o no de ellos? ¿Alguien puede recomendar uno que no está en la lista? (Esto no es de ninguna manera una lista exclusiva o exhaustiva). Realmente me encantaría automatizar muchos de nuestros procesos mecánicos, y espero que la comunidad de Stack Overflow nos ayude para que podamos evitar la parte del trabajo que adormece la mente :).

edición: Re: Plataforma - Tenemos terminales principalmente de Windows XP en el trabajo, pero 1) tenemos algunas PC de prueba de Mac, por lo que OS X es una opción viable, y 2) si que significaría la automatización de muchos de estas tareas, construiré una caja Linux si es necesario. Entonces, la plataforma no es un problema.

Respuesta

2

Me gusta mucho el framework watir (ejecutándose en ruby) - programable, fácil, usa IE para automatizar la Web (y para obtener un comportamiento verdadero del navegador). Por supuesto, solo es Windows; no especificó si eso es lo que usa.

Hemos utilizado watir para automatizar nuestras pruebas de una aplicación web, y estamos muy satisfechos.

2

algunas sugerencias:

Edit: Supongo que estos actuarán en las páginas web que contienen los datos que desea enviar a los formularios.

+0

Greasemonkey no parece ajustarse realmente al problema. Greasemonkey es ideal para "cuando tal o cual página cargue, ejecute este javascript", mientras que lo que estoy buscando es algo como "ingrese esto en este formulario, luego haga clic en enviar, luego vaya a este otro formulario, ingrese estas otras cosas, etc. " – Whisker

+0

Estaba pensando que si pudiera obtener los datos que desea enviar a una página web, podría usar GreaseMonkey para enviarlos al formulario. (Supongo que lo necesitarías para hacer un sitio cruzado xmlhttprequest) –

+0

Nunca pensé en eso; felicitaciones por la inversión del problema. Aunque si estuviera en el punto en que esa era una opción seria, probablemente miraría primero a Chickenfoot, ya que es compatible con parte de la API de GM y se adapta mejor a mi modelo mental del problema ("vaya a esta URL, haga clic en esto, envíe eso ") – Whisker

1

Si está utilizando libwww-perl, no se quede allí. Use WWW :: Mechanize, que es un contenedor de LWP que realiza la interacción del navegador que desea. La desventaja: no maneja JavaScript (todavía).

WWW::Mechanize home page

+0

Impresionante - gracias por el enlace. Definitivamente voy a investigar eso, pero tendré que sumergir el dedo gordo primero a la luz de la advertencia de javascript (que también te agradezco por mencionar). – Whisker

2

En realidad soy un gran fan de Chickenfoot, que he empezado a utilizar mucho recientemente para proporcionar capacidades de scripting para Zotero, otra extensión de Firefox.

3

Otra opción es usar AutoIT + Firefox + mozrepl + FF.au3. Esto es poderoso ya que AutoIT opera fuera del navegador (es una fantástica herramienta de automatización en sí misma) por lo que puede trabajar enviando múltiples formularios de navegador sin perder el contexto. Luego, el script FF.au3 le permite simplemente controlar Firefox a través de AutoIT3.

1

que utilice la herramienta iMacros usted ha mencionado con buenos resultados:

Firefox + iMacros

Tenga en cuenta que también se presenta como libre de IE complemento! Lo bueno de esto es que las mismas macros funcionan en ambos navegadores. En mi humilde opinión, es muy útil para realizar pruebas web rápidas y sencillas y automatizar la web en general.

Tim

2

Uso:

Firefox + iMacros para ir a buscar:
Ir a la página que desee (por ejemplo, yahoo.com), llevar IMACRO en el foco, Récord y la búsqueda de algún texto. Cuando se muestra la primera página, guarde la página en un archivo.

Ahora usted tiene una página que quería.
Ha terminado de recuperar en este momento.
Guarde la macro y asígnele un nombre. La próxima vez puede simplemente ejecutar la macro que acaba de guardar.

A continuación, limpiar el código html que tienes al utilizar este:

# this is php, do the proper thing in the language of your choice 
# one or more spaces is equal to one space, remove tab, return ...etc. 
return ereg_replace(' +', ' ', trim(preg_replace("/(\r\n|\r|\t|\n|\'|\")/s", '', $string) 


Ahora usted tiene una página HTML con una línea limpia, muy larga.
Ahora puede cortar y rebanar como desee utilizando un regEx.

Lo que debe saber:
puede iniciar la macro en Firefox a través de una tarea programada (comandos) si necesita la automatización completa.

1

mi impresión de IMacros es usted need to pay para desbloquear muchos de los artículos, así que fui con Chickenfoot. Desafortunadamente la lista de correo de Chickenfoot está muy tranquila últimamente, así que no estoy seguro de su futuro ...

0

Estoy usando iMacro/.net para un proyecto de extracción de datos. Me gusta la facilidad de scripting para iMacros, que es importante ya que la aplicación puede tener hasta más de 60 sitios web para extraer datos. Para este proyecto, el costo general de ejecutar iMacros vale el tiempo de desarrollo guardado. No es la solución ideal, pero es una forma de interactuar con los datos de otro sitio web, suponiendo que no proporcionan una interfaz adecuada. Lo bueno es que he creado un pequeño grupo de servidores de rascadores iMacros para ayudar a distribuir la carga. En este momento los usuarios pueden acceder a los servidores de aplicaciones a través de un sitio web para solicitudes adhoc, pero eventualmente me gustaría que evolucione en una línea más fluida.

3

Soy un gran fan de selenio

http://www.seleniumhq.com

diseñado para manejar pruebas del navegador automatizado aunque con apoyo scripting (varios idiomas) puede diseñar plantillas de macro que llenarán en formas tales y en función de variables

también: ¿alguien sabe una buena macro que funciona con Flash? No parece que javascript pueda cruzar esa línea

3

¡iMacros para Firefox es gratis y es todo lo que necesitas! ¡Automatiza cualquier actividad del navegador y simplemente funciona! También puede leer/escribir formularios de relleno de datos externos y muchos muchos más. ¡Soy un gran admirador de este complemento de Firefox!

1

WatiN, .net versión de Watir. Me gusta mucho.

0

No tenemos varias opciones para Python:

  • postbásica urllib2 apoyo
  • Mechanize (originalmente, hace 9 años, portado desde Perl, enormemente mejorado a partir de entonces) y sus envolturas:

Aquí hay un post corta y clara (aunque un poco anticuado) comparar cómo la misma tarea sencilla se puede lograr utilizando diferentes bibliotecas: http://blog.spritecloud.com/2010/01/posting-forms-with-python/

Tenga en cuenta que Clientform también mencionado no es parte de la mecanización en la actualidad .

+0

Para personas como yo que no pueden encontrar documentos mecanizados, está en la página [de soporte] (http://wwwsearch.sourceforge.net/mechanize/support.html) –

Cuestiones relacionadas