phantomjs form提交
phantomjs表单提交,其实就是对DOM就行操作(获取元素),在这里实现了动态传入各种参数
不说了 直接上代码
var page = require('webpage').create(),
system = require('system'),fname;
var hostUrl = system.args[1];
var resId = system.args[2];
var fileName = system.args[3];
console.log("访问地址:"+hostUrl);
console.log("资源名称:"+resId);
console.log("资源路径:"+fileName);
console.log('请稍等,正在提交数据。。。');
page.open(hostUrl, function (stat) {
page.uploadFile('input[name=resFile]', fileName);
page.evaluate(function (resId) {
document.querySelector('input[name=resId]').value = resId;
document.querySelector('input[name=resConf]').value = '{"resVer":"'+new Date().getTime()+'"}';
document.querySelector('form').submit();
},resId);
phantom.exit();
});
这里会出现一个问题,如果上传的资源文件过大,时间过长,就会出现上传失败
所以在这里要通过一个状态来判断是否上传完成,onResourceReceived资源收到后调用后方法
var page = require('webpage').create(),
system = require('system'),fname;
var hostUrl = system.args[1];
var resId = system.args[2];
var fileName = system.args[3];
console.log("访问地址:"+hostUrl);
console.log("资源名称:"+resId);
console.log("资源路径:"+fileName);
console.log('请稍等,正在提交数据。。。');
page.open(hostUrl, function (stat) {
page.uploadFile('input[name=resFile]', fileName);
page.evaluate(function (resId) {
document.querySelector('input[name=resId]').value = resId;
document.querySelector('input[name=resConf]').value = '{"resVer":"'+new Date().getTime()+'"}';
document.querySelector('form').submit();
},resId);
});
page.onResourceReceived = function(response) {
if(response.stage=='end' && response.url.indexOf('.json')>-1){
phantom.exit();
}
};
这里判断了stage状态结束,还有当前地址改变,完成了上传,就能结束当前操作
通过phantomjs实现了前端不能实现的,在测试中效果很明显
phantomjs form提交的更多相关文章
- 关于button和form提交的一些问题
1.form 中type 为submit 和button的区别 submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了. 如果表单在点击提交按钮后需要用JS进行处理( ...
- 解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
之前开发时遇到的一个问题,使用easyui的form提交表单,在Chrome下时没问题的,但是在IE下出现类似附件下载时提示是否保存的现象. 这里记录一下如何解决的.其实这个现象不光是easyui的f ...
- AngularJS系列:表单全解(表单验证,radio必选,三级联动,check绑定,form提交验证)
一.查看$scope -->寻找Form控制变量的位置 Form控制变量 格式:form的name属性.input的name属性.$... formName.inputField.$pristi ...
- struts2中form提交到action中的中文参数乱码问题解决办法(包括取中文路径)
我的前台页是这样的: <body> <form action="test.action" method="post"> ...
- jquery.form.js实现将form提交转为ajax方式提交的使用方法
本文实例讲述了jquery.form.js实现将form提交转为ajax方式提交的方法.分享给大家供大家参考.具体分析如下: 这个框架集合form提交.验证.上传的功能. 这个框架必须和jquery完 ...
- jquery.validate+jquery.form提交的三种方式
原文:http://www.cnblogs.com/datoubaba/archive/2012/06/06/2538873.html jquery.validate+jquery.form提交的三种 ...
- Extjs ajax form 提交
1.form 提交 form.form.submit({ url: "/HandlerExcelToDB/UploadFile.ashx", params: {}, success ...
- 2016 系统设计第一期 (档案一)jQuery ajax serialize()方法form提交数据
jQuery ajax serialize()方法form提交数据,有个很奇怪的问题,好像不能取到隐藏控件的值. //点击提交按钮保存数据 $('#btn_submitUser').click(fun ...
- HttpWebRequest结合HtmlAgilityPack实现网页form提交
年前一个项目,需要在某个系统实现系统自动操作. 系统页面使用form提交,页面参数较多,也参数设计一系列计算逻辑,改动一个值,其他值自动改变. 传统方法使用正则表达式匹配参数,构建post参数进行请求 ...
随机推荐
- javascript中的一些基本方法收藏
W3C DOM 什么是DOM,DOM其实就是把一个HTML或者XML等符合W3C标准的文档内容模拟成一个JAVA对象,这样才能给JAVA或者JS来操作.下面是JS中模拟出的内置DOM对象documen ...
- 在C语言控制台程序中播放MP3音乐
游戏没有声音多单调. 这里做一个简单的范例,用 mciSendString 函数播放 MP3 格式的音乐,先看看代码吧: // 编译该范例前,请把 background.mp3 放在项目文件夹中 // ...
- JTA
http://blog.csdn.net/hengyunabc/article/details/19433947
- CCI_chapter 2 Linked Lists
2.1 Write code to remove duplicates from an unsorted linked list /* Link list node */ struct node { ...
- 外部函数接口 LibFFI
“FFI” 的全名是 Foreign Function Interface,通常指的是允许以一种语言编写的代码调用另一种语言的代码.而 “Libffi” 库只提供了最底层的.与架构相关的.完整的”FF ...
- BZOJ1123: [POI2008]BLO
1123: [POI2008]BLO Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 614 Solved: 235[Submit][Status] ...
- DSP与单片机的区别
以前刚学习单片机时,经过一订的编程,能实现很多不同的功能,当时就觉得单片机真的是神通广大.后来接触到DSP,发现DSP处理数字在通信上,更加方便.于是我就很好奇的问自己,DSP和单片机,究竟有什么区别 ...
- NOI2013 UOJ122 向量内积
神题...... 还是大神讲得比较清晰~orz http://dffxtz.logdown.com/posts/197950-noi2013-vector-inner-product 启发题:poj3 ...
- POJ1061青蛙的约会(扩展欧几里德算法)
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 102239 Accepted: 19781 Descript ...
- hdu 4512 吉哥系列故事——完美队形I_LCIS
题目链接 题意: 假设有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希望从中挑出一些人,让这些人形成一个新的队形,新的队形若满足以下三点要 求,则就是新 ...