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参数进行请求 ...
随机推荐
- Flask学习记录之MarkDown编辑文本
为了让网页支持markdown编辑文本,使用如下了4个库 PageDown : 在前端提供一个可以实时将markdown内容转换成html文本进行效果预览的编辑器 Flask-PageDown: 这个 ...
- CSS太阳月亮地球三角恋旋转效果
纯粹玩一下,好像没有什么实际的卵用,but,纯玩买不了上当,纯玩买不了受骗........ 地月旋转的一个css效果,无聊玩玩,可以复制到记事本试试 <!DOCTYPE html>< ...
- Android MVP模式 简单易懂的介绍方式
主要学习这位大神的博客:简而易懂 Android MVP模式 简单易懂的介绍方式 https://segmentfault.com/a/1190000003927200
- 解压和生成 system.img&data.img ( ext4格式)
另一篇文章讲述了如何解压和生成system.img, 那是针对yaffs2格式的文件系统镜像. 目前越来越多的Android手机放弃了nand, 更多采用了emmc为内部存储设备. 以emmc为存储设 ...
- hadoop集群的故障概率估算
hadoop集群的机器数业界(国内)最大的在5000左右,是什么限制了集群的规模呢?有好几个原因. 1. namenode的内存大小限制 2. 机器故障概率随着机器数目增大而增大,通常一份数据存储在h ...
- JTA
http://blog.csdn.net/hengyunabc/article/details/19433947
- cf B. Jeff and Periods
http://codeforces.com/contest/352/problem/B #include <cstdio> #include <cstring> #includ ...
- poj1740 A New Stone Game
题意:对于n堆石子,每堆若干个,两人轮流操作,每次操作分两步,第一步从某堆中去掉至少一个,第二步(可省略)把该堆剩余石子的一部分分给其它的某些堆. 真是好♂题,代码不长就是好♂题. 首先考虑两堆相同的 ...
- GDB调试GCC(jRate)
1.前提是build GCC的时候要修改makefile,在configure之后生成的makefile忠,将CFLAGS和CFLAGS_FOR_BUILD改成-g3 -O0.. 2.在root用户下 ...
- ResourceString的用法
在Delphi编程的那段“古老”的日子里(就是在版本4之前),在程序中使用字符串有两个基本的方法.你可以使用字符串将它们嵌入到源程序中,例如: MessageDlg( 'Leave your stin ...