从命令行加载网站并填写表格

从命令行加载网站并填写表格

使用 Linux 命令行 (Bash shell),我喜欢在浏览器中加载特定网站(通常是 Firefox,但其他网站也可以,只要它在 Linux 下运行)并用一些数据填充预定义表单。实际上,这应该从 Makefile 运行。大多数表单数据是静态的,将作为变量存储在 Makefile 中,只是一些字段需要在手动发送表单之前手动填写。

我知道如何加载有问题的网站从命令行使用:

firefox <URL>

但似乎无法使用命令行中给出的变量自动填充表单。是否有插件、可执行文件或 JavaScript 允许我执行此操作?欢迎提供任何建议和提示。我不介意编写一些 JavaScript。

答案1

https://github.com/bard/mozrepl/wiki。MozRepl 允许您通过 telnet 连接,与 netcat 结合使用正是您所需要的。

答案2

我现在使用 Greasemonkey 脚本解决了这个问题,该脚本将 URL 参数复制到表单。Makefile 使用firefox包含参数的 URL 进行调用。

这满足了我的需求。对于更复杂的输入,需要进行一些改进,例如一些 URL 编码。

用户脚本:

// ==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');
    }
}

生成文件:

# CTAN Upload
CTAN=http://dante.ctan.org/upload.html
CONTRIBUTION=filemod
VERSION=
NAME=John Doe
[email protected]
SUMMARY=Updated to ${VERSION}:
DIRECTORY=/macros/latex/contrib/${CONTRIBUTION}
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=${CONTRIBUTION}&version=${VERSION}&name=${NAME}&email=${EMAIL}&summary=${SUMMARY}&directory=${DIRECTORY}&DoNotAnnounce=${DONOTANNOUNCE}&announce=${ANNOUNCEMENT}&notes=${NOTES}&license=${LICENCE}&freeversion=${FREEVERSION}' &

相关内容