Javascript 如何使用WWW::Mechanize::Firefox在网页上上传文件

Javascript 如何使用WWW::Mechanize::Firefox在网页上上传文件,javascript,linux,perl,perl-module,www-mechanize-firefox,Javascript,Linux,Perl,Perl Module,Www Mechanize Firefox,我正在尝试自动化一些工作流程。这包括登录到网站,填写一些数据,然后在拖放部分上传pdf文件,上传后单击继续 我正在使用Perl WWW::Mechanize::Firefox模块,因为它支持javascript 尝试了许多方法,但没有成功 eg网站 你能帮我一下吗。我试图通过浏览器将post请求模拟到perl中,但不知道如何实现这一点 请求标头为>>>>>> Host: XXXXX.XXXXXXX.XXX User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x

我正在尝试自动化一些工作流程。这包括登录到网站,填写一些数据,然后在拖放部分上传pdf文件,上传后单击继续

我正在使用Perl WWW::Mechanize::Firefox模块,因为它支持javascript

尝试了许多方法,但没有成功

eg网站

你能帮我一下吗。我试图通过浏览器将post请求模拟到perl中,但不知道如何实现这一点

请求标头为>>>>>>

Host: XXXXX.XXXXXXX.XXX
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0
Accept: application/json
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Cache-Control: no-cache
X-Requested-With: XMLHttpRequest
Referer: https://login.XXXXXX.XXXXX/XXXXXXXX
Content-Length: 26712
Content-Type: multipart/form-data; boundary=---------------------------10666735941660241595971092194
Cookie: _pk_id.2.a970=e6850e4973836855.1497637919.11.1497792387.1497791018.; XSRF-TOKEN=eyJpdiI6InplN3NRck9CdDlFem54ekpxbmxUMXc9PSIsInZhbHVlIjoiYU41TXhLS1hYbmtvNUo0ejQ3Tk1EZ2ZMS2FUdGRuYVwvc3Q5R3RwMkpHQklCTkpkdlBFUUJDeVJYUlhQRWkyOGhVK3FwK1hWdHlMZEtSVGFcLzNhaTF2QT09IiwibWFjIjoiYjg5NDE3YjhiMWMwMmI0NTI3NzRmNTM0NmRhNTUxY2VkZTM3YWRmYjlkMmNmY2IwOGRlNzVjYzc3NjU1NTg4YyJ9; laravel_session=eyJpdiI6ImFzdHpodTJlU0toOWZLeUQ3QTExV1E9PSIsInZhbHVlIjoiaDBpZGcwMGxtb3k4a3BYTzJhVjJLOEZOOUNWekJVUjB3YTk4QjhKMUJIWFhhK3BwWTRzd2Nxekp1T3pZRVNnZUhlWjBHZGNUeW1sNDBza0NnN0hTd3c9PSIsIm1hYyI6ImM0Y2ZhOWY1MmY2NGM3YTdiNDFmY2EzZjg3NmY1ODk2MTQyOGZkOWQxODdjNzc0OTU1ZmVkYjE2NTQ3MjU3OTgifQ%3D%3D; _pk_ses.2.a970=*
Connection: keep-alive
正在尝试此模块

my $mech = WWW::Mechanize::Firefox->new();
$mech->cookies();
我知道如何使用xpath上的单击方法打开文件浏览器,但不知道如何选择文件

请建议我一些其他方式是感激的,请检查示例网站,它有相同的文件上传选项

文件位于我的本地linux服务器上

下面是负责上传的javascript

  function sendFax(aRecipients) {
    $('#FaxResponseModal #ajaxResponse').html("");
    $('#FaxResponseModal').modal('show');

    $sFormData = $('form').serialize();

    $ajaxLoader = $('.ajax-modal-loading').detach();

    $.each(aRecipients, function (iKey, sRecipient) {

        $_sFormData = $sFormData + '&to_' + sRecipient + '=' + sRecipient;

        $.post('/fax_Senden', $_sFormData).done(function (oResponse) {

            $oResponse = JSON.parse(oResponse);

            $.each($oResponse.data, function (sKey, sValue) {
                $_oRow = $("<tr></tr>");
                $_oIconCell = $("<td><span class='glyphicon'></span></td>");
                $_oNumberCell = $("<td>" + sKey + "</td>");
                $_oStatusCell = $("<td></td>");

                if (sValue.Code == 100 || sValue.Code == 101) {
                    $($_oIconCell).find('span').addClass('glyphicon-ok text-success');
                    $($_oRow).addClass('active');
                } else {
                    $($_oIconCell).find('span').addClass('glyphicon-flash');
                    $($_oRow).addClass('danger');
                }

                $($_oStatusCell).text(sValue.Message);

                $_oRow.append($_oIconCell).append($_oNumberCell).append($_oStatusCell);

                $('#FaxResponseModal #ajaxResponse').prepend($_oRow);
            });

        });

    });

    $ajaxLoader.appendTo("body");
}





$(document).ready(function () {
    $(".dropzone").dropzone({
        paramName: "file",
        url: "/fax_Senden/upload",
        autoProcessQueue: true,
        uploadMultiple: false,
        acceptedFiles: "application/pdf",
        maxFiles: 1,
        dictDefaultMessage: "Legen Sie hier die PDF Datei ab.",
        previewTemplate: '<div class="dz-preview dz-file-preview">' +
        '<div class="dz-image">' +
        '<img data-dz-thumbnail />' +
        '</div>' +
        '<div class="dz-details">' +
        '<div class="dz-filename"><span data-dz-name></span></div>' +
        '<div class="dz-size" data-dz-size></div>' +
        '</div>' +
        '<div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>' +
        '<div class="dz-success-mark"><span>✔</span></div>' +
        '<div class="dz-error-mark"><span>✘</span></div>' +
        '<div class="dz-error-message"><span data-dz-errormessage></span></div>' +
        '</div>',
        init: function () {
            this.on("addedfile", function () {
                if (this.files[1] != null) {
                    this.removeFile(this.files[0]);
                }
            });
        },

        sending: function (file, xhr, formData) {
            formData.append('_token', $('input[name="_token"]').val());
        },

        success: function (file, response) {
            $('button.segment_fileupload').removeClass('disabled');
            $('.uploadError').addClass('hidden');
        },

        error: function (file, errorMsg, response) {
            $('button.segment_fileupload').addClass('disabled');
            $('.uploadError').removeClass('hidden');
        }
    });


    $('input[type=radio][name=pdfcreate]').change(function () {
        $('.segment_freitext').hide();
        $('.segment_fileupload').hide();

        $('.segment_' + $(this).val()).show();
    });

    $('button[name="preview"].segment_freitext').on('click', function () {

        $('#editor').val(CKEDITOR.instances.editor.getData());

        $.post('/fax_Senden', $('form').serialize() + '&preview=true', function (data) {

            $('#previewPDFModal .modal-dialog').css('width', '75vw');
            $('#previewPDFModal .modal-body').html(
                '<object data="data:application/pdf;base64,' + data + '" type="application/pdf" width="100%" height="100%" style="min-height: 55vh">' +
                '<iframe src="data:application/pdf;base64,' + data + '" width="100%" height="100%" style="border: none;">' +
                'This browser does not support PDFs. Please download the PDF to view it: <a href="data:application/pdf;base64,' + data + '">Download PDF</a>' +
                '</iframe>' +
                '</object>'
            );

            $('#previewPDFModal').modal('show');

        });

    });

    $('button[name="preview"].segment_fileupload').on('click', function () {

        if ( $(this).hasClass("disabled") ) {
            return;
        }

        $('#editor').attr('disabled', 'disabled');
        formData = $('form').serialize();
        $('#editor').removeAttr('disabled');

        $('.ajax-modal-loading').show();
        source = new EventSource('/fax_Senden/preview?' + formData);

        //a message is received
        source.addEventListener('message', function (e) {
            var data = JSON.parse(e.data);

            if (e.data.search('FILE') != -1) {
                source.close();

                $('#previewPDFModal .modal-dialog').css('width', '75vw');
                $('#previewPDFModal .modal-body').html(
                    '<object data="data:application/pdf;base64,' + data.message + '" type="application/pdf" width="100%" height="100%" style="min-height: 55vh">' +
                    '<iframe src="data:application/pdf;base64,' + data.message + '" width="100%" height="100%" style="border: none;">' +
                    'This browser does not support PDFs. Please download the PDF to view it: <a href="data:application/pdf;base64,' + data.message + '">Download PDF</a>' +
                    '</iframe>' +
                    '</object>'
                );

                $('.ajax-modal-loading').html("");
                $('#previewPDFModal').modal('show');
                $('.ajax-modal-loading').hide();
            }

            if (data.message == 'progress') {

                $('.ajax-modal-loading').html(
                    "<p class='generateMsg'>Bearbeite Seite " + data.progress + "</p>"
                );
            }
        });

        source.addEventListener('error', function (e) {
            //kill the object ?
            source.close();
        });

    });
函数sendFax(aRecipients){
$(“#FaxResponseModel#ajaxResponse').html(“”);
$('#FaxResponseModal').modal('show');
$sFormData=$('form').serialize();
$ajaxLoader=$('.ajax模态加载').detach();
$.each(aRecipients,function)(iKey,sRecipient){
$\$sFormData=$sFormData+'&to_'+sRecipient+'='+sRecipient;
$.post('/fax\u Senden',$\u sFormData).done(函数(或响应){
$oResponse=JSON.parse(oResponse);
$.each($oResponse.data,函数(sKey,sValue){
$_oRow=$(“”);
$_oIconCell=$(“”);
$_oNumberCell=$(“”+sKey+“”);
$_oStatusCell=$(“”);
if(sValue.Code==100 | | sValue.Code==101){
$($_oIconCell.find('span').addClass('glyphicon-ok text success');
$($\u oRow).addClass('active');
}否则{
$($_oIconCell).find('span').addClass('glyphicon-flash');
$($\u oRow).addClass('danger');
}
$($\u oStatusCell).text(sValue.Message);
$\u oRow.append($\u oIconCell).append($\u oNumberCell.append($\u oStatusCell);
$('#FaxResponseModel#ajaxResponse')。前置($#oRow);
});
});
});
$ajaxLoader.appendTo(“正文”);
}
$(文档).ready(函数(){
$(“.dropzone”).dropzone({
参数名称:“文件”,
url:“/fax\u Senden/upload”,
自动处理队列:true,
uploadMultiple:false,
acceptedFiles:“应用程序/pdf”,
maxFiles:1,
口述默认信息:“您的PDF日期”,
预览模板:“”+
'' +
'' +
'此浏览器不支持PDF。请下载PDF以查看它:'+
'' +
''
);
$('previewpdfmodel').model('show');
});
});
$('button[name=“preview”].segment\u fileupload')。在('click',函数(){
if($(this).hasClass(“已禁用”)){
返回;
}
$('#editor').attr('disabled','disabled');
formData=$('form').serialize();
$(“#编辑器”).removeAttr('disabled');
$('.ajax模态加载').show();
source=新事件源('/fax\u Senden/preview?'+formData);
//收到一条消息
source.addEventListener('message',函数(e){
var data=JSON.parse(e.data);
如果(例如,data.search('FILE')!=-1){
source.close();
$('#previewpdfmodel.modal对话框').css('width','75vw');
$('#previewpdfmodel.modal body').html(
'' +
'' +
'此浏览器不支持PDF。请下载PDF以查看它:'+
'' +
''
);
$('.ajax模态加载').html(“”);
$('previewpdfmodel').model('show');
$('.ajax模态加载').hide();
}
如果(data.message=='progress'){
$('.ajax模态加载').html(
“

Bearbeite Seite”+data.progress+”

” ); } }); source.addEventListener('error',函数(e){ //杀死目标? source.close(); }); });