Laden Sie die Website und füllen Sie das Formular über die Befehlszeile aus

4508
Martin Scharrer

Mit der Linux-Kommandozeile (Bash-Shell) lade ich gerne eine bestimmte Website in meinen Browser (normalerweise Firefox, aber andere wäre in Ordnung, solange sie unter Linux läuft) und fülle ein vordefiniertes Formular mit einigen Daten aus. Eigentlich sollte dies von einem Makefile ausgehen. Die meisten Formulardaten sind statisch und werden als Variablen im Makefile gespeichert. Einige Felder müssen manuell ausgefüllt werden, bevor das Formular manuell gesendet wird.

Ich weiß, wie man die betreffende Website von der Kommandozeile aus lädt :

firefox <URL> 

Es scheint jedoch keine Möglichkeit zu geben, das Formular automatisch mit Variablen aus der Befehlszeile auszufüllen. Gibt es ein Plugin, eine ausführbare Datei oder ein JavaScript, mit dem ich dies tun kann? Anregungen und Hinweise sind willkommen. Ich habe nichts dagegen, etwas JavaScript zu schreiben.

4

2 Antworten auf die Frage

3
artistoex

Siehe https://github.com/bard/mozrepl/wiki . Mit MozRepl können Sie sich über Telnet verbinden. In Kombination mit Netcat ist dies genau das, was Sie brauchen.

Vielen Dank. Ist der Browser noch normal geöffnet? Wie gesagt, ich möchte letzte Änderungen vornehmen und sie manuell einreichen. Martin Scharrer vor 13 Jahren 0
Ja, sobald Sie Firefox normal gestartet haben, können Sie in das Telnet einsteigen. artistoex vor 13 Jahren 0
Vielen Dank. Dies brachte mich nun auf die Idee, dass ich dieses Problem auch mit einem Benutzerskript lösen kann, das einfacher ist (siehe meine eigene Antwort). Ich werde Ihre Antwort nach kurzer Zeit annehmen. Martin Scharrer vor 13 Jahren 0
3
Martin Scharrer

Ich habe dies jetzt mit einem Greasemonkey-Skript gelöst, das die URL-Parameter in das Formular kopiert. Das Makefile ruft firefoxmit der URL einschließlich der Parameter auf.

Das funktioniert für meine Bedürfnisse. Für komplexere Eingaben sind einige Verfeinerungen erforderlich, z. B. eine URL-Codierung.

Benutzerskript:

// ==UserScript== // @name Fill CTAN upload form // @namespace http://www.scharrer-online.de/namespace/ // @description Fills the CTAN upload form with the data provided as URL variables // @include http://*.ctan.org/upload.html* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js // ==/UserScript==  //var $ = unsafeWindow.jQuery;  // From http://papermashup.com/read-url-get-variables-withjavascript/ // Added: decodeURI function getUrlVars() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { vars[key] = decodeURI(value); }); return vars; }  var vars = getUrlVars();  for (name in vars) { $("input[name=" + name + "]").val(vars[name]); $("select[name=" + name + "]").find("option:selected").removeAttr('selected'); $("select[name=" + name + "]").find("option[value=" + vars[name] + "]") .attr('selected','selected'); }  if ('DoNotAnnounce' in vars) { var val = vars['DoNotAnnounce'].toLowerCase(); if (val == '1' || val == 'yes' || val == 'true') { $("input[name=DoNotAnnounce]").attr('checked','checked'); } } 

Makefile:

# CTAN Upload CTAN=http://dante.ctan.org/upload.html CONTRIBUTION=filemod VERSION= NAME=John Doe EMAIL=john.doe@somewhere.com SUMMARY=Updated to $: DIRECTORY=/macros/latex/contrib/$ DONOTANNOUNCE= ANNOUNCEMENT= NOTES= LICENCE=free FREEVERSION=lppl #FILE= # can't be set because of security limitations  upload: ctanify firefox 'http://dante.ctan.org/upload.html?contribution=$&version=$&name=$&email=$&summary=$&directory=$&DoNotAnnounce=$&announce=$&notes=$&license=$&freeversion=$' &