Linguagem de script para preenchimento do formulário da web

5

Eu tenho um emprego como estagiário em uma empresa de tecnologia, me foi dado o infeliz trabalho de realizar alguma entrada de dados em nosso sistema de gerenciamento web. As informações inseridas no formulário da web são armazenadas em um banco de dados MySQL. Ao receber os dados, percebi que eu teria que enviar este formulário on-line cerca de 1000 horas diferentes, todas com cerca de 10 campos de texto / caixas de seleção diferentes por formulário. (Então, em outras palavras, seria completamente entorpecedor e seria um desperdício de tempo e recursos ridículos, ou assim pensei ...)

Tendo usado os bancos de dados um bom bocado antes disso, minha reação imediata foi apenas escrever um pequeno script MySQL para importar todos os dados em massa, especialmente porque ele já era apresentado em uma planilha do Excel pronta para ser usada. Pensei que poderia ter sido algum tipo de teste, já que parecia óbvio demais. Eu escrevi o script que consistia em cerca de 10 linhas de código, mas foi então informado que não poderia ser confiável com privilégios de administrador do MySQL para executar o script. Então, meu próximo pensamento seria escrever um script para inserir as informações através do formulário da web (que levará dez vezes mais tempo, mas é o que eu preciso)

Como não estou familiarizado com o script dessa natureza (parece que eu precisaria de algo semelhante a um bot, mas do tipo bom), eu não tinha certeza de como proceder para fazer isso. Existe um idioma preferido para usar para inserir os dados que tenho no formulário da Web a que tenho acesso? Eu não estou particularmente procurando por isso para ser feito por mim, de qualquer forma, apenas um bom ponto na direção certa, tanto quanto a linguagem de script para usar e como emparelhá-lo com os dados que tenho que precisam ser digitados.

Obrigado pela ajuda / entrada valiosa!

EDITAR:

Existe uma maneira de realizar isso usando perl sem ter acesso para colocar arquivos no servidor?

Poderia executar alguns loops de Javascript para extrair os dados de .csv ou apenas um formato .txt com delimitadores de linha e inseri-los no formulário da Web?

    
por ityler22 12.07.2012 / 03:28
fonte

3 respostas

8

Existem algumas possibilidades (a última delas seria a mais fácil e mais sensata, na minha opinião, exceto se isso for uma peça de código a longo prazo e reutilizável):

  • Use uma estrutura de testes na web

    Eles são feitos para fazer esse tipo de coisa, então obviamente eles fazem isso bem. Mas eu acho que eles são um pouco pesados para o que você quer fazer. Por exemplo, Adel recomendou o Selenium, que é uma ótima ferramenta de teste, mas um monstro para começar (e vai ativar navegadores , exceto se você usar a nova API baseada no WebDriver que usará um driver sem navegador, como HtmlUnit.

    Então, é por isso que eu recomendo, se você seguir esse caminho, apenas usar algo como HtmlUnit (que você poderia invocar de um programa Java, ou de qualquer outra linguagem baseada em JVM: Groovy, Scala, Clojure. ..). Mas eu ainda considero isso como relativamente pesado.

  • Use uma linguagem de script de propósito geral

    Python, Perl e muitos outros permitirão que você escreva isso rapidamente, ou reutilize uma biblioteca existente para implementar seu próprio cliente HTTP para enviar suas solicitações POST .

    Se esse pensamento for mantido no futuro, eu usaria o Python. Se for rápido e sujo, Perl é o melhor amigo de um hacker (e a CPK é sua marreta favorita).

  • Use scripts de shell nus e algo parecido com curl

    Seja ainda mais minimalista: descobrir scripts para processar suas entradas e formatar seus dados, algumas curl invocações para POST para o servidor e voila!

    Se você estiver no Windows, o Powershell será seu amigo.

Existem centenas de outras possibilidades para fazer isso, eu mal mencionei aquelas que me vêm à mente e que eu usaria.

Se essa fosse a minha tarefa, provavelmente escreveria uma linha de comando feia que:

  • se for uma planilha simples (não é algo em que você precisa selecionar os valores da célula):

    1. converte o .xls para .csv,
    2. canalizá-lo para o que mais lhe convier para transformar os dados,
    3. canalize-o para um comando curl para POST.
  • se for uma planilha complexa (onde você precisa selecionar os valores das células):

    • crie um script para o bit de extração de dados,
    • invoque o curl ou use as bibliotecas internas da linguagem de script para o POST.

Eu só uso uma estrutura de teste mais avançada se:

  • É provável que eu seja solicitado a fazer isso novamente para diferentes formatos de dados,
  • É provável que eu seja solicitado a fazer isso novamente para origens de dados e bancos de dados de destino diferentes,
  • É provável que seja solicitado a fazer isso com frequência.

Nesse caso, uma abordagem mais engenheirada faz algum sentido, para manutenção e extensibilidade.

Em todos os casos, lembre-se de fazer backup desse script e passá-lo, documentá-lo (um README faria isso) e implementar um usage . Se eles tiverem um, versão-lo em seu SCM.

Observação: outro motivo pelo qual a abordagem de envio de formulário da Web pode ser melhor do que a abordagem "direta ao SQL" é que o servidor que recebe o formulário pode estar fazendo verificações extras que você não conhece no momento.

Não dizendo que é o caso, mas talvez a segurança não fosse a única razão.

Boa sorte com o trabalho.

EDIT: apenas notou que você marcou isto como "PHP". Eu realmente não vejo por que, como isso implicaria para o código ser do lado do servidor (bem, você poderia usar PHP para qualquer tipo de script, mas por que fazer isso para si mesmo?)

    
por 12.07.2012 / 03:56
fonte
0

Em primeiro lugar, você provavelmente deve mudar um pouco sua atitude. Você diz "dado o trabalho infeliz" - por quê? Quero dizer, você pode aprender lições valiosas aqui. Além disso, você é um estagiário. É um ótimo trabalho e envolve trabalhos "sujos".

Hmm, eu posso aconselhá-lo a verificar o Selênio . Se você tiver que automatizar uma função web, é bastante útil usar o Selenium.

    
por 12.07.2012 / 03:34
fonte
0

Acho que a resposta da haylem fornece o melhor conjunto de opções. Dito isso, gostaria de mencionar Autohotkey se você estiver em uma plataforma Windows. É uma linguagem de script decente, mas muito strong para automatizar tarefas GUI.

Concordo que postar os dados diretamente é o melhor caminho a percorrer, mas há situações em que isso não funciona tão facilmente. Um exemplo seria se o seu sistema de administração exigir um login e, em seguida, rastrear um ticket de autenticação de algum tipo usando o estado do lado do cliente. Você poderia certamente emular isso usando HTTP sem cabeçalho, mas isso adiciona complexidade ao problema. Em algum momento, pode ser mais fácil manipular o navegador diretamente. Autohotkey é uma boa escolha para isso. É apenas uma linguagem de script, então não é tão pesada quanto o Selenium, e pode ser útil para outras tarefas não relacionadas também.

    
por 10.11.2012 / 22:10
fonte