Javascript 如何使用WWW::Mechanize::Firefox在网页上上传文件
我正在尝试自动化一些工作流程。这包括登录到网站,填写一些数据,然后在拖放部分上传pdf文件,上传后单击继续 我正在使用Perl WWW::Mechanize::Firefox模块,因为它支持javascript 尝试了许多方法,但没有成功 eg网站 你能帮我一下吗。我试图通过浏览器将post请求模拟到perl中,但不知道如何实现这一点 请求标头为>>>>>>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
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();
});
});