【100分请教】请问java怎样定时点击某个网页上的某个按钮? 那个网页所在的系统是用aspx做的,但我只熟悉java那个系统是别人做的,我只是使用者,没有源码我想做成一个小程序,可以运行起来,定时去点击那个按钮麻烦给出例子或详细思路,谢谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不需要去点击按钮,1)你先搞清楚点击那个按钮会发生什么时:提交表单?或者直接访问一个URL;2)然后用代码连接服务器,模拟这个访问行为; 这个跟asp还是java貌似没啥关系。 系统需要登陆,登陆时有验证码的。点击那个按钮后提交表单,查看源文件得到的:<input language="javascript" onclick="__doPostBack('update','')" name="update" type="button" id="update" title="每次学习10分钟后才允许更新学习时间" value="更新学习时间" />function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); }}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title> Untitled Page</title> <style type="text/css"> .txtbtn_gray{ FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#FFFfff, EndColorStr=#cccccc); text-decoration: none; padding: 2px 3px 2px 3px; height: 20px; text-align: center; color: #333333; font-size: 12px; border: 1px solid #BCDAF5;} </style> <script language="javascript" type="text/javascript"><!--var CallTimeLen = "0";var begintime;var timer = null;function DoConverseCallTimer(){ if(document.frmtimer.thzt.value == "") { //alert("请输入倒计时开始的秒数!"); } else { //document.frmtimer.conversestart.disabled=true; var minute="0"; var second="0"; begintime = parseInt(begintime)+1; //**在这里+1秒 minute = parseInt(begintime/60); second = begintime%60; //document.frmtimer.passedtime.value=minute; if (minute>="10") { document.frmtimer.update.disabled=false; } if(minute<"20") { document.frmtimer.thzt.innerText =minute+"分"+second+"秒"; } else { document.frmtimer.thzt.innerText =minute+"分"+second+"秒"; return; } timer1 = window.setTimeout("DoConverseCallTimer()",1000); document.frmtimer.passedtime.value = begintime; }}function setBegintime(){ begintime = document.frmtimer.thzt.value;}--> </script></head><body> <form name="frmtimer" method="post" action="RecordTime.aspx?subid=1" id="frmtimer"><div><input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /><input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJMTM4OTExNDMxDxYEHgVzdGFydAURMjAxMC0xMS0zIDk6MTU6MzIeCXN1YmplY3RpZAUBMRYCAgMPZBYCAgcPDxYCHgRUZXh0BQMxOTZkZGQo05um4rIeR4/OKKDAmzWVhCNa4g==" /></div><script type="text/javascript"><!--var theForm = document.forms['frmtimer'];if (!theForm) { theForm = document.frmtimer;}function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); }}// --></script> <div> <table width="100%"> <tr> <td> <font color="red">注意:点击“更新学习时间”按钮的时间间隔为:大于10分钟小于20分钟,不在此范围则不能累计学习时间。</font></td> </tr> <tr> <td> <table height="100%" width="100%" bgcolor="#99ccff"> <tr> <td> <a href="#" id="A1" onclick="javascript:window.parent.location='../IndexPages/ProjectIndex.aspx'" class="txtbtn_gray"> 返回项目首页</a> </td> <td> <input name="txtUserId" type="text" value="24689" id="txtUserId" style="display: none;" /> <input name="passedtime" type="hidden" id="passedtime" /> 已学时间: <span id="lblDurationCHN">196</span></td> <td> 本次学习时间:<input name="thzt" type="text" id="thzt" onkeyup="value=value.replace(/[^\d]/g,'');setBegintime()" /> </td> <td align="left"> <input language="javascript" onclick="__doPostBack('update','')" name="update" type="button" id="update" title="每次学习10分钟后才允许更新学习时间" value="更新学习时间" /> </td> </tr> </table> </td> </tr> </table> </div> <script language="javascript" type="text/javascript"> <!-- document.frmtimer.thzt.value=0; document.frmtimer.thzt.onkeyup(); document.frmtimer.thzt.disabled=true; document.frmtimer.update.disabled=true; DoConverseCallTimer(); //--> </script> <div> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBQLauvnIBQKz8dy8BQKu+OnrDgKE6rWYAwLrjqj2BQUdA0vwPCygCR3iLVLSr2NxdWay" /></div></form></body></html> 系统需要登陆,登陆时有验证码的。点击那个按钮后提交表单,查看源文件得到的:<input language="javascript" onclick="__doPostBack('update','')" name="update" type="button" id="update" title="每次学习10分钟后才允许更新学习时间" value="更新学习时间" />function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); }}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title> Untitled Page</title> <style type="text/css"> .txtbtn_gray{ FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#FFFfff, EndColorStr=#cccccc); text-decoration: none; padding: 2px 3px 2px 3px; height: 20px; text-align: center; color: #333333; font-size: 12px; border: 1px solid #BCDAF5;} </style> <script language="javascript" type="text/javascript"><!--var CallTimeLen = "0";var begintime;var timer = null;function DoConverseCallTimer(){ if(document.frmtimer.thzt.value == "") { //alert("请输入倒计时开始的秒数!"); } else { //document.frmtimer.conversestart.disabled=true; var minute="0"; var second="0"; begintime = parseInt(begintime)+1; //**在这里+1秒 minute = parseInt(begintime/60); second = begintime%60; //document.frmtimer.passedtime.value=minute; if (minute>="10") { document.frmtimer.update.disabled=false; } if(minute<"20") { document.frmtimer.thzt.innerText =minute+"分"+second+"秒"; } else { document.frmtimer.thzt.innerText =minute+"分"+second+"秒"; return; } timer1 = window.setTimeout("DoConverseCallTimer()",1000); document.frmtimer.passedtime.value = begintime; }}function setBegintime(){ begintime = document.frmtimer.thzt.value;}--> </script></head><body> <form name="frmtimer" method="post" action="RecordTime.aspx?subid=1" id="frmtimer"><div><input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /><input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJMTM4OTExNDMxDxYEHgVzdGFydAURMjAxMC0xMS0zIDk6MTU6MzIeCXN1YmplY3RpZAUBMRYCAgMPZBYCAgcPDxYCHgRUZXh0BQMxOTZkZGQo05um4rIeR4/OKKDAmzWVhCNa4g==" /></div><script type="text/javascript"><!--var theForm = document.forms['frmtimer'];if (!theForm) { theForm = document.frmtimer;}function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); }}// --></script> <div> <table width="100%"> <tr> <td> <font color="red">注意:点击“更新学习时间”按钮的时间间隔为:大于10分钟小于20分钟,不在此范围则不能累计学习时间。</font></td> </tr> <tr> <td> <table height="100%" width="100%" bgcolor="#99ccff"> <tr> <td> <a href="#" id="A1" onclick="javascript:window.parent.location='../IndexPages/ProjectIndex.aspx'" class="txtbtn_gray"> 返回项目首页</a> </td> <td> <input name="txtUserId" type="text" value="24689" id="txtUserId" style="display: none;" /> <input name="passedtime" type="hidden" id="passedtime" /> 已学时间: <span id="lblDurationCHN">196</span></td> <td> 本次学习时间:<input name="thzt" type="text" id="thzt" onkeyup="value=value.replace(/[^\d]/g,'');setBegintime()" /> </td> <td align="left"> <input language="javascript" onclick="__doPostBack('update','')" name="update" type="button" id="update" title="每次学习10分钟后才允许更新学习时间" value="更新学习时间" /> </td> </tr> </table> </td> </tr> </table> </div> <script language="javascript" type="text/javascript"> <!-- document.frmtimer.thzt.value=0; document.frmtimer.thzt.onkeyup(); document.frmtimer.thzt.disabled=true; document.frmtimer.update.disabled=true; DoConverseCallTimer(); //--> </script> <div> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBQLauvnIBQKz8dy8BQKu+OnrDgKE6rWYAwLrjqj2BQUdA0vwPCygCR3iLVLSr2NxdWay" /></div></form></body></html> 请搜索:httpunit基于HTML的JAVA测试类,你说的那些功能很容易实现! 这不是一个好的解决方案,建议将按钮调用的业务逻辑改写成webservice架构,然后写一个timer调用该webservice。这才是当前比较流行而且安全的解决方案。 菜鸟请教各位大侠 数值格式化问题 提示一条错误,但能运行,不知道是怎么回事啊 一个getContentPane()的问题 线程吧,不知道这样是啥错误? 文件读写问题,编译成功,class文件运行不了! Resultset.getString("COLUMN_NAME")的COLUMN_NAME是怎么来的,书上这么写,我不明白作者是怎么知道用它的? 重新再学一遍Java的基础,特来散分 java开发工具都用什么啊, 问题:如何修改代码才可以找到5+2的结果? java trim()为什么没用? 关于一个字符串后缀的删除问题
1)你先搞清楚点击那个按钮会发生什么时:提交表单?或者直接访问一个URL;
2)然后用代码连接服务器,模拟这个访问行为;
点击那个按钮后提交表单,查看源文件得到的:<input language="javascript" onclick="__doPostBack('update','')" name="update" type="button" id="update" title="每次学习10分钟后才允许更新学习时间" value="更新学习时间" />function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
Untitled Page
</title>
<style type="text/css">
.txtbtn_gray
{
FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#FFFfff, EndColorStr=#cccccc);
text-decoration: none;
padding: 2px 3px 2px 3px;
height: 20px;
text-align: center;
color: #333333;
font-size: 12px;
border: 1px solid #BCDAF5;
}
</style> <script language="javascript" type="text/javascript">
<!--
var CallTimeLen = "0";
var begintime;
var timer = null;
function DoConverseCallTimer()
{
if(document.frmtimer.thzt.value == "")
{
//alert("请输入倒计时开始的秒数!");
}
else
{
//document.frmtimer.conversestart.disabled=true;
var minute="0";
var second="0";
begintime = parseInt(begintime)+1; //**在这里+1秒
minute = parseInt(begintime/60);
second = begintime%60;
//document.frmtimer.passedtime.value=minute;
if (minute>="10")
{
document.frmtimer.update.disabled=false;
}
if(minute<"20")
{
document.frmtimer.thzt.innerText =minute+"分"+second+"秒";
}
else
{
document.frmtimer.thzt.innerText =minute+"分"+second+"秒";
return;
}
timer1 = window.setTimeout("DoConverseCallTimer()",1000);
document.frmtimer.passedtime.value = begintime;
}
}function setBegintime()
{
begintime = document.frmtimer.thzt.value;
}
-->
</script></head>
<body>
<form name="frmtimer" method="post" action="RecordTime.aspx?subid=1" id="frmtimer">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJMTM4OTExNDMxDxYEHgVzdGFydAURMjAxMC0xMS0zIDk6MTU6MzIeCXN1YmplY3RpZAUBMRYCAgMPZBYCAgcPDxYCHgRUZXh0BQMxOTZkZGQo05um4rIeR4/OKKDAmzWVhCNa4g==" />
</div><script type="text/javascript">
<!--
var theForm = document.forms['frmtimer'];
if (!theForm) {
theForm = document.frmtimer;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
// -->
</script>
<div>
<table width="100%">
<tr>
<td>
<font color="red">注意:点击“更新学习时间”按钮的时间间隔为:大于10分钟小于20分钟,不在此范围则不能累计学习时间。</font></td>
</tr>
<tr>
<td>
<table height="100%" width="100%" bgcolor="#99ccff">
<tr>
<td>
<a href="#" id="A1" onclick="javascript:window.parent.location='../IndexPages/ProjectIndex.aspx'" class="txtbtn_gray">
返回项目首页</a> </td>
<td>
<input name="txtUserId" type="text" value="24689" id="txtUserId" style="display: none;" />
<input name="passedtime" type="hidden" id="passedtime" />
已学时间:
<span id="lblDurationCHN">196</span></td>
<td>
本次学习时间:<input name="thzt" type="text" id="thzt" onkeyup="value=value.replace(/[^\d]/g,'');setBegintime()" />
</td>
<td align="left">
<input language="javascript" onclick="__doPostBack('update','')" name="update" type="button" id="update" title="每次学习10分钟后才允许更新学习时间" value="更新学习时间" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</div> <script language="javascript" type="text/javascript">
<!--
document.frmtimer.thzt.value=0;
document.frmtimer.thzt.onkeyup();
document.frmtimer.thzt.disabled=true;
document.frmtimer.update.disabled=true;
DoConverseCallTimer();
//-->
</script>
<div> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBQLauvnIBQKz8dy8BQKu+OnrDgKE6rWYAwLrjqj2BQUdA0vwPCygCR3iLVLSr2NxdWay" />
</div></form>
</body>
</html>
点击那个按钮后提交表单,查看源文件得到的:<input language="javascript" onclick="__doPostBack('update','')" name="update" type="button" id="update" title="每次学习10分钟后才允许更新学习时间" value="更新学习时间" />
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
Untitled Page
</title>
<style type="text/css">
.txtbtn_gray
{
FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#FFFfff, EndColorStr=#cccccc);
text-decoration: none;
padding: 2px 3px 2px 3px;
height: 20px;
text-align: center;
color: #333333;
font-size: 12px;
border: 1px solid #BCDAF5;
}
</style> <script language="javascript" type="text/javascript">
<!--
var CallTimeLen = "0";
var begintime;
var timer = null;
function DoConverseCallTimer()
{
if(document.frmtimer.thzt.value == "")
{
//alert("请输入倒计时开始的秒数!");
}
else
{
//document.frmtimer.conversestart.disabled=true;
var minute="0";
var second="0";
begintime = parseInt(begintime)+1; //**在这里+1秒
minute = parseInt(begintime/60);
second = begintime%60;
//document.frmtimer.passedtime.value=minute;
if (minute>="10")
{
document.frmtimer.update.disabled=false;
}
if(minute<"20")
{
document.frmtimer.thzt.innerText =minute+"分"+second+"秒";
}
else
{
document.frmtimer.thzt.innerText =minute+"分"+second+"秒";
return;
}
timer1 = window.setTimeout("DoConverseCallTimer()",1000);
document.frmtimer.passedtime.value = begintime;
}
}function setBegintime()
{
begintime = document.frmtimer.thzt.value;
}
-->
</script></head>
<body>
<form name="frmtimer" method="post" action="RecordTime.aspx?subid=1" id="frmtimer">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJMTM4OTExNDMxDxYEHgVzdGFydAURMjAxMC0xMS0zIDk6MTU6MzIeCXN1YmplY3RpZAUBMRYCAgMPZBYCAgcPDxYCHgRUZXh0BQMxOTZkZGQo05um4rIeR4/OKKDAmzWVhCNa4g==" />
</div><script type="text/javascript">
<!--
var theForm = document.forms['frmtimer'];
if (!theForm) {
theForm = document.frmtimer;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
// -->
</script>
<div>
<table width="100%">
<tr>
<td>
<font color="red">注意:点击“更新学习时间”按钮的时间间隔为:大于10分钟小于20分钟,不在此范围则不能累计学习时间。</font></td>
</tr>
<tr>
<td>
<table height="100%" width="100%" bgcolor="#99ccff">
<tr>
<td>
<a href="#" id="A1" onclick="javascript:window.parent.location='../IndexPages/ProjectIndex.aspx'" class="txtbtn_gray">
返回项目首页</a> </td>
<td>
<input name="txtUserId" type="text" value="24689" id="txtUserId" style="display: none;" />
<input name="passedtime" type="hidden" id="passedtime" />
已学时间:
<span id="lblDurationCHN">196</span></td>
<td>
本次学习时间:<input name="thzt" type="text" id="thzt" onkeyup="value=value.replace(/[^\d]/g,'');setBegintime()" />
</td>
<td align="left">
<input language="javascript" onclick="__doPostBack('update','')" name="update" type="button" id="update" title="每次学习10分钟后才允许更新学习时间" value="更新学习时间" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</div> <script language="javascript" type="text/javascript">
<!--
document.frmtimer.thzt.value=0;
document.frmtimer.thzt.onkeyup();
document.frmtimer.thzt.disabled=true;
document.frmtimer.update.disabled=true;
DoConverseCallTimer();
//-->
</script>
<div> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBQLauvnIBQKz8dy8BQKu+OnrDgKE6rWYAwLrjqj2BQUdA0vwPCygCR3iLVLSr2NxdWay" />
</div></form>
</body>
</html>
基于HTML的JAVA测试类,你说的那些功能很容易实现!