Linguaggio di scripting per compilare il modulo web

5

Ho un lavoro come stagista in un'azienda tecnologica, mi è stato dato il lavoro sfortunato di eseguire alcuni inserimenti nel nostro sistema di gestione web. Le informazioni inserite nel modulo web sono memorizzate in un DB MySQL. Dopo aver ricevuto i dati, mi sono reso conto che avrei dovuto inviare questo modulo online circa 1000 volte diverse, il tutto composto da circa 10 campi di testo / caselle di controllo diversi per modulo. (Quindi, in altre parole, sarebbe completamente stordito e sarebbe una ridicola perdita di tempo e risorse, o almeno così pensavo ...)

Avendo usato i database un po 'prima di questo, la mia reazione immediata era quella di scrivere un breve script MySQL per importare tutti i dati, specialmente perché era già stato presentato in un foglio di calcolo Excel pronto per essere utilizzato. Pensavo che potesse essere una sorta di test poiché sembrava troppo ovvio. Ho scritto la sceneggiatura che consisteva di circa 10 righe di codice, ma è stata poi informata che non potevo fidarmi dei privilegi di amministratore di MySQL per eseguire lo script. Quindi il mio prossimo pensiero sarebbe quello di scrivere uno script per inserire semplicemente le informazioni attraverso il modulo web (che richiederà dieci volte di più ma è quello che devo fare)

Non avendo familiarità con lo scripting di questa natura (sembra che avrei bisogno di qualcosa di simile a un bot, ma di un buon tipo) non ero sicuro di come procedere per farlo. Esiste una lingua preferita da utilizzare per inserire i dati che ho nel modulo web a cui ho accesso? Non sono particolarmente interessato a questo per me, in ogni caso, solo un bel punto nella giusta direzione, per quanto riguarda il linguaggio di scripting da usare e come accoppiarlo con i dati che ho bisogno di inserire.

Grazie per l'aiuto / input prezioso!

EDIT:

C'è un modo per farlo usando perl senza avere accesso a mettere file sul server?

Sarei in grado di eseguire alcuni loop Javascript per estrarre i dati da .csv o semplicemente un formato .txt con delimitatori di riga e inserirli nel modulo web?

    
posta ityler22 12.07.2012 - 03:28
fonte

3 risposte

8

Ci sono alcune possibilità (l'ultima sarebbe la più semplice e la più sensata, a mio avviso, tranne se è destinata a essere una parte di codice a lungo termine e riusabile):

  • Utilizza un framework di test web

    Sono destinati a fare questo genere di cose, così ovvio che lo fanno bene. Ma penso che siano un po 'pesanti per quello che vuoi fare. Adel, Adel ha consigliato il selenio, che è un ottimo strumento per testare ma un mostro spaventoso con cui iniziare (e accenderà i browser , tranne se si utilizza la nuova API basata su WebDriver che utilizzerà un driver senza browser come HtmlUnit.

    Quindi, è per questo che consiglierei, se andrete su questa strada, di usare solo qualcosa come HtmlUnit (che potreste invocare da un programma Java, o da qualsiasi altra lingua basata su JVM: Groovy, Scala, Clojure. ..). Ma lo considero comunque relativamente pesante.

  • Utilizza un linguaggio di scripting generico

    Python, Perl e un branco di altri ti permetteranno di scrivere velocemente da zero, o di riutilizzare una libreria esistente per implementare il tuo client HTTP per inviare le tue richieste di POST .

    Se questo pensiero verrà mantenuto in futuro, andrei con Python. Se sarà veloce e sporco, Perl è il miglior amico di un hacker (e CPAN il suo maglio preferito).

  • Utilizza script di shell nulli e qualcosa come curl

    Diventa ancora più minimalista: script di shell nudi per elaborare i tuoi input e formattare i dati, alcune% invenzioni dicurl a POST al server e voilà!

    Se sei su Windows, Powershell sarà tuo amico.

Ci sono centinaia di altre possibilità per farlo, a malapena menziono quelle che mi vengono in mente e che userei.

Se fosse il mio compito, probabilmente scriverei una brutta riga di comando che:

  • se si tratta di un semplice foglio di calcolo (non qualcosa per cui è necessario selezionare i valori delle celle):

    1. converte i file .xls in .csv,
    2. conduci tutto ciò che ti conviene per trasformare i dati,
    3. reindirizzalo a un comando di arricciatura su POST.
  • se si tratta di un foglio di calcolo complesso (in cui è necessario selezionare i valori delle celle):

    • script il bit di estrazione dei dati,
    • richiama curl o usa le librerie incorporate del linguaggio di scripting su POST.

Utilizzo solo un framework di test più avanzato se:

  • Probabilmente mi verrà chiesto di farlo di nuovo per diversi formati di dati,
  • Probabilmente mi verrà chiesto di farlo di nuovo per origini dati e DB di destinazione diversi,
  • Probabilmente mi verrà chiesto di farlo spesso.

In tal caso, un approccio più ingegneristico ha un senso, per la manutenibilità e l'estensibilità.

In tutti i casi, ricorda di eseguire il backup di quello script e di passarlo e di documentarlo (un README lo farebbe) e implementare un usage . Se ne hanno uno, lo versioni nel loro SCM.

Nota: un altro motivo per cui l'approccio di invio di moduli Web potrebbe essere migliore rispetto all'approccio "diretto a SQL" è che il server che riceve il modulo potrebbe eseguire controlli aggiuntivi di cui non si è a conoscenza al momento.

Non dire che sia il caso, ma forse la sicurezza non era l'unica ragione.

Buona fortuna per il lavoro.

EDIT: ti sei accorto che l'hai taggato come "PHP". Non vedo davvero perché, poiché ciò implicherebbe che il codice fosse lato server (beh, potresti usare PHP per qualsiasi tipo di script, ma perché farlo da solo?)

    
risposta data 12.07.2012 - 03:56
fonte
0

In primo luogo, probabilmente dovresti cambiare un po 'il tuo atteggiamento. Dici "dato il lavoro sfortunato" - perché? Voglio dire, potresti imparare lezioni preziose qui. Inoltre, sei un tirocinante. È un ottimo lavoro e comporta un lavoro "sporco".

Hmm, potrei consigliarti di controllare Selenium . Se devi automatizzare una funzione web, è abbastanza utile usare Selenium.

    
risposta data 12.07.2012 - 03:34
fonte
0

Penso che la risposta di haylem offra la migliore serie di opzioni. Detto questo, vorrei menzionare Autohotkey se sei su una piattaforma Windows. È un linguaggio di scripting decente, ma molto potente per l'automazione delle attività della GUI.

Sono d'accordo che pubblicare i dati direttamente sia il modo migliore per andare, ma ci sono situazioni in cui questo non funziona così facilmente. Un esempio potrebbe essere se il tuo sistema di amministrazione richiede un login e quindi tiene traccia di un ticket di autenticazione di qualche tipo usando lo stato lato client. Si potrebbe certamente emulare questo usando HTTP senza testa, ma aggiunge complessità al problema. A un certo punto potrebbe diventare più facile manipolare direttamente il browser. Autohotkey è una buona scelta per questo. È solo un linguaggio di scripting quindi non è pesante come il selenio, e può essere utile anche per altri compiti non collegati.

    
risposta data 10.11.2012 - 22:10
fonte

Leggi altre domande sui tag