greasemonkey - tareas - imacros script
¿Cuál es la mejor manera de hacer scripts web/macros web? (15)
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 interfaces basadas en web). ) 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.
Aquí están los requisitos:
- Debe poder interactuar con formularios web (no solo descargar una página y raspar el archivo; la secuencia de comandos debe editar controles dentro de un formulario web y luego enviar ese formulario)
- 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 allí y mirarla y re -login cada pocos minutos)
- Sería realmente, realmente, preferible si pudiera leer archivos locales y hacer alguna sustitución / manipulación básica de cadenas en ellos (por ejemplo, sería bueno tener una lista de variables o algún código HTML en un archivo de texto y luego tener el script reemplace el token "STORENAME" con el nombre de esa tienda en particular antes de insertar el código en el formulario)
Aquí están las soluciones de guiones que están en mi radar hasta ahora (realmente no he investigado ninguno de estos, aunque he jugado con Chickenfoot):
- Pata de pollo
- iMacros para Firefox
- libwww-perl
- libwww para Unix y C (mientras buscaba libwww para Perl me encontré con esto, que no sabía que existía hasta ahora)
- una solución macro más "general" como AutoHotKey
¿Alguien aquí en Stack Overflow ha probado 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 :).
editar: Re: plataforma: tenemos principalmente terminales WindowsXP en funcionamiento, pero 1) tenemos algunas PC de prueba de Mac, por lo que OS X es una opción viable, y 2) si eso significaría automatizar muchas de estas tareas, I '' Construiré una caja de Linux si es necesario. Entonces, la plataforma no es un problema.
WatiN , versión .net de Watir. Me gusta mucho.
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.
Me gusta mucho el framework watir (que se ejecuta en ruby): programable, fácil, usa IE para automatizar la Web (y para que pueda obtener un verdadero comportamiento 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.
@Asaf Bartov, en realidad, Watir no es solo Windows. También hay FireWatir que funciona en Windows, Linux y Mac, y SafariWatir que funciona en Mac.
http://wtr.rubyforge.org/ http://wiki.openqa.org/display/WTR/FireWatir http://safariwatir.rubyforge.org/
Algunas sugerencias:
- Escribe una extensión de Firefox
- Escribir un script de Greasemonkey
- Escribir un guión de Ubiquity
Editar: supongo que estos actuarán en las páginas web que contienen los datos que desea enviar a los formularios.
Si está utilizando libwww-perl, entonces no se quede allí. Use WWW :: Mechanize, que es un envoltorio alrededor de LWP que realiza la interacción del navegador que desea. La desventaja: no maneja JavaScript (todavía).
De hecho, soy un gran admirador de Chickenfoot, que he comenzado a utilizar mucho recientemente para proporcionar capacidades de scripting para Zotero, otra extensión de Firefox.
Utilizar:
Firefox + iMacros para buscar:
Vaya a la página que le gusta (por ejemplo, yahoo.com), ponga iMacro en foco, pulse grabar y busque texto. Cuando se muestra la primera página, guarde la página en un archivo.
Ahora tienes una página que querías.
Has terminado de buscar en este punto.
Guarde la macro y asígnele un nombre. La próxima vez puedes simplemente ejecutar la macro que acabas de guardar.
Luego, limpia el código html que obtuviste al usar esto:
# 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 tiene una página html limpia con una línea, una larga.
Ahora puede cortar y rebanar como desee utilizando un regEx.
Cosas que saber:
Puede iniciar la macro en firefox a través de un cronjob (línea de comandos) si necesita una automatización completa.
mi impresión de IMacros es que debes pagar para desbloquear muchos de los artículos, así que fui con Chickenfoot. Desafortunadamente, la lista de correo de Chickenfoot es muy tranquila últimamente, así que no estoy seguro de su futuro ...
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.
Soy un gran fan de Selenium
diseñado para manejar las pruebas automatizadas del navegador, aunque con soporte de secuencias de comandos (múltiples idiomas) puede diseñar plantillas de macro que rellenarán formularios basados en variables
también: ¿alguien sabe una buena macro que funciona con Flash? No parece que JavaScript pueda cruzar esa línea
¡iMacros for 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!
Hay varias opciones para Python:
- soporte básico de correos de urllib2
- Mecanizar (originalmente, hace 9 años, portado desde Perl, enormemente mejorado a partir de entonces) y sus envolturas:
- Twill (también funciona desde la línea de comandos)
- zope.testbrowser
Aquí hay una publicación de blog corta y clara (aunque un poco anticuada) que compara cómo se puede lograr la misma tarea simple usando diferentes libs: http://blog.spritecloud.com/2010/01/posting-forms-with-python/
Tenga en cuenta que Clientform
también mencionó que ahora hay una parte del mecanizado.
Puedes lograrlo usando el plugin de Firefox iMacro y Notepad ++ Macro.
Hay un tutorial que puedes leer en mi blog:
http://xianlin.wordpress.com/2014/02/05/how-to-use-iopus-imacros-notepad-web/
Debería poder hacer una tarea similar utilizando el método que describí en ese blog.
utilizamos la herramienta iMacros que mencionó con buen éxito:
Firefox + iMacros
Tenga en cuenta que también viene como un complemento gratuito de IE . 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