Загрузите сайт и заполните форму из командной строки

4418
Martin Scharrer

Используя командную строку Linux (оболочка Bash), мне нравится загружать определенный веб-сайт в мой браузер (обычно Firefox, но другой будет в порядке, если он работает под Linux) и заполнять предварительно определенную форму некоторыми данными. На самом деле, это должно запускаться из Makefile. Большинство данных формы являются статическими и будут храниться как переменные в Makefile, только некоторые поля должны быть заполнены вручную перед отправкой формы вручную.

Я знаю, как загрузить веб-сайт из командной строки, используя:

firefox <URL> 

Но, похоже, нет возможности автоматически заполнять форму переменными, указанными в командной строке. Есть ли плагин, исполняемый файл или JavaScript, который позволяет мне это сделать? Любые предложения и советы приветствуются. Я не против кодирования JavaScript.

4

2 ответа на вопрос

3
artistoex

Смотрите https://github.com/bard/mozrepl/wiki . MozRepl позволяет вам подключаться через telnet, в сочетании с netcat это будет именно то, что вам нужно.

Благодарю. Браузер все еще открыт как обычно? Как я уже сказал, я хочу сделать окончательные изменения и отправить его вручную. Martin Scharrer 13 лет назад 0
Да, как только вы запустите Firefox нормально, вы сможете подключиться к нему. artistoex 13 лет назад 0
Благодарю. Это привело меня к мысли, что я могу решить эту проблему также с помощью пользовательского скрипта, который проще (см. Мой собственный ответ). Я приму ваш ответ через некоторое время. Martin Scharrer 13 лет назад 0
3
Martin Scharrer

I solved this now using a Greasemonkey script which copies the URL parameters to the form. The Makefile calls firefox with the URL including the parameters.

This works for my needs. Some refinements would be needed for more complex input, i.e. some URL encoding.

User Script:

// ==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=$' & 

Похожие вопросы