【已解决】关于关闭网页安全提示框的方法和无法填写部分表单的问题
本帖最后由 tjztbk 于 2012-10-23 23:58 编辑刚刚开始学习AutoIT3,现在想做个自动留言的小程序,在填写网页表单时遇到两个问题,特向各位请教!
第一个问题就是打开html文件时IE弹出的信息栏(黄条),对它的操作有没有更好办法!
第二个问题就是填写留言类型表单的时候无法正常填写,这种下拉列表有什么好办法吗?比如的通过设置什么参数不让它出现呢。
代码如下:
#include <IE.au3>
$oIE = _IECreate (@ScriptDir&"\留言.html",0,1,0,0) ;第三个参数为0,表示不等待完全载入就返回,而有时间$Oie没有检测到IE加载完毕(IE弹出对话框时网页加载会中断)可能造成不会执行下面代码的现象。
WinSetState(WinGetTitle("") , "", @SW_MAXIMIZE); 最大化窗口
sleep(300) ;为测试程序看清过程而设置的暂停(下同)
If WinActivate("信息栏","您注意到信息栏了吗?") Then ;关闭信息栏窗口,不一定所有电脑出现,所以加判断
sleep(300)
ControlClick ("信息栏","您注意到信息栏了吗?","Button1")
EndIf
;以下几行代码是为关闭打开html文件时IE弹出的信息栏(黄条),如果不关闭部分表单无法正常填写。我是基本模拟键盘操作完成的,不知道有没有更好的办法,比如的通过设置什么参数不让它出现呢。还有这个黄条也不是所有电脑都出现,如何添加判断呢?
sleep(300)
ControlClick ( WinGetTitle("") , "","Button1")
sleep(300)
Send("A")
sleep(300)
WinActivate("安全警告", "允许活动内容(如脚本和 ActiveX 控件)可能对您有所帮助")
sleep(300)
ControlClick ( "安全警告", "允许活动内容(如脚本和 ActiveX 控件)可能对您有所帮助","Button1")
sleep(300)
;开始填写内容
$oForm = _IEFormGetObjByName ($oIE, "form1")
$oQuery1 = _IEFormElementGetObjByName ($oForm, "zw")
_IEFormElementSetValue ($oQuery1, 3) ;选择职务
sleep(800)
;就是下面填写“发帖类型”和“发帖类型子类”部分下面代码我想了好多办法都无法实现正确填写。
$oQuery2_1 = _IEFormElementGetObjByName ($oForm, "example")
_IEFormElementSetValue ($oQuery2_1, "9999") ;选发帖类型(无法正常填写)
sleep(800)
$oQuery2_2 = _IEFormElementGetObjByName ($oForm, "stage2")
_IEFormElementSetValue ($oQuery2_2, 1) ;选发帖类型子类(无法正常填写)
sleep(800)
$oQuery4 = _IEFormElementGetObjByName ($oForm, "city")
_IEFormElementSetValue ($oQuery4, 11) ;选所属地市:
sleep(800)
$oQuery5 = _IEFormElementGetObjByName ($oForm, "unit")
_IEFormElementSetValue ($oQuery5, "广东省江门市北郊五福街") ;填写单位
sleep(800)
$oQuery6 = _IEFormElementGetObjByName ($oForm, "email")
_IEFormElementSetValue ($oQuery6, "tjztbk@126.com") ;填写Email
sleep(800)
$oQuery7 = _IEFormElementGetObjByName ($oForm, "phone")
_IEFormElementSetValue ($oQuery7, "0750-888888") ;填写电话号码
sleep(800)
$oQuery8 = _IEFormElementGetObjByName ($oForm, "title")
_IEFormElementSetValue ($oQuery8, "留言标题") ;填写标题
sleep(800)
$oQuery9 = _IEFormElementGetObjByName ($oForm, "content")
_IEFormElementSetValue ($oQuery9, "留言内容") ;填写内容
sleep(800)
$oQuery10 = _IEFormElementGetObjByName ($oForm, "category")
_IEFormElementSetValue ($oQuery10, 16) ;选择发帖专题
sleep(3000)
$oQuery11 = _IEFormElementGetObjByName ($oForm, "Submit")
_IEAction($oQuery11 ,"click") ;点击发送发帖专题
sleep(800)
_IEQuit ($oIE) ;关闭IE
代码和网页都在附件里有!
本帖最后由 tjztbk 于 2012-10-23 19:58 编辑
把网页“留言.html”内容也贴到这里!希望各位有空帮我看看!<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>留言</title>
<style type="text/css">
<!--
body {
margin-top: 0px;
margin-bottom: 0px;
}
-->
</style>
<link href="images/css.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.style2 {
color: #FFFFFF;
font-weight: bold;
}
.fram { font-size: 10pt;
background-image: url(images/fram.gif);
border: 1px solid #666666;
}
.style3 {color: #FF0000}
.tableBorder { BORDER-RIGHT: #183789 1px solid; BORDER-TOP: #183789 1px solid; BORDER-LEFT: #183789 1px solid; BORDER-BOTTOM: #183789 1px solid; BACKGROUND-COLOR: #ffffff
}
-->
</style>
<link href="../images/css.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.STYLE4 {color: #FF0000; font-weight: bold; }
-->
</style>
</head>
<body>
<div align="center">
<table width="999" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><table width="999" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td background="new_images/head_1.jpg"> </td>
</tr>
</table></td>
</tr>
</table>
<br>
<table width="999" border="0" cellspacing="0" cellpadding="3">
<tr>
<td bgcolor="#F5F5F5"> </td>
</tr>
</table>
<br>
<table width="999" border="0" cellpadding="0" cellspacing="1" bgcolor="#64A4DC">
<tr bgcolor="#64A4DC">
<td><div align="left" class="style2"></div></td>
</tr>
<tr valign="middle" bgcolor="#F2F2F2">
<td height="10" bgcolor="#F2F2F2"><div align="left"><span class="unnamed1">留言</span></div></td>
</tr>
<tr>
<td height="50" bgcolor="#FFFFFF"><div align="center" class="STYLE4">
<p> </p>
</div>
<div align="left">
<table width="80%" border="0" align="center" cellpadding="4" cellspacing="1" bgcolor="#FFFFFF" class="tableBorder">
<form name="form1" method="post" action="mjly_post_rs.asp">
<tr bgcolor="#EDF5F9">
<td width="18%" class="forumRow">
<div align="right">姓名:</div></td>
<td width="82%" class="forumRow"> tjztbk </td>
</tr>
<tr>
<td width="18%" class="forumRow">
<div align="right">职务:</div></td>
<td class="forumRow"> <select name="zw">
<option value="0">--请选择你的级别--</option>
<option value="1">厅局级</option>
<option value="2">处局级</option>
<option value="3">科所队</option>
<option value="4">科员</option>
<option value="5">办事员</option>
<option value="6">其它</option>
</select>
<span class="forumRow"><span class="style3">*该项为必选项</span></span></td></tr>
<tr bgcolor="#EDF5F9">
<td width="18%" class="forumRow">
<div align="right">留言类型:</div></td>
<td class="forumRow">
<select name="example" size="1" onChange="redirect(this.options.selectedIndex)">
<option>--选择大类--</option>
<option>综合</option>
<option>业务</option>
<option>队伍建设</option>
<option>后勤保障</option>
</select>
<select name="stage2" size="1">
<option value="9999">--请选择--</option>
</select>
<script>
<!--
/*
Double Combo Script Credit
By Website Abstraction (www.wsabstract.com)
Over 200+ free JavaScripts here!
*/
var groups=document.form1.example.options.length
var group=new Array(groups)
for (i=0; i<groups; i++)
group=new Array()
group=new Option("--请选择--","9999")
group=new Option("综合","1")
group=new Option("工作","2")
group=new Option("信息化","3")
group=new Option("其他","4")
group=new Option("教育培训","5")
group=new Option("人事工作","6")
group=new Option("组织纪律","7")
group=new Option("其他","8")
group=new Option("后勤保障","9")
var temp=document.form1.stage2
function redirect(x){
for (m=temp.options.length-1;m>0;m--)
temp.options=null
for (i=0;i<group.length;i++){
temp.options=new Option(group.text,group.value)
}
temp.options.selected=true
}
function go(){
location=temp.options.value
}
//-->
</script>
<span class="style3">*该项为必选项</span></td>
</tr> <tr bgcolor="#EDF5F9">
<td width="18%" class="forumRow">
<div align="right">所属地市:</div></td>
<td class="forumRow">
<select name="city" id="city">
<option value="0">-请选择-</option>
<option value="1">省厅</option>
<option value="2">广州</option>
<option value="3">深圳</option>
<option value="4">珠海</option>
<option value="5">中山</option>
<option value="6">佛山</option>
<option value="7">潮州</option>
<option value="8">东莞</option>
<option value="9">河源</option>
<option value="10">惠州</option>
<option value="11">江门</option>
<option value="12">揭阳</option>
<option value="13">茂名</option>
<option value="14">梅州</option>
<option value="15">清远</option>
<option value="16">汕头</option>
<option value="17">汕尾</option>
<option value="18">韶关</option>
<option value="19">阳江</option>
<option value="20">云浮</option>
<option value="21">湛江</option>
<option value="22">肇庆</option>
</select>
<span class="style3">*该项为必选项</span></td>
</tr> <tr bgcolor="#EDF5F9">
<td width="18%" class="forumRow">
<div align="right">单位:</div></td>
<td class="forumRow">
<input name="unit" type="text" class="fram" id="zw" value="" size="40">
</td>
</tr>
<tr>
<td class="forumRow"><div align="right">EMAIL:</div></td>
<td class="forumRow"><input name="email" type="text" class="fram" id="email" value="" size="40">
<span class="style3">(请留下你的邮箱,以便回复)</span></td>
</tr>
<tr bgcolor="#EDF5F9">
<td class="forumRow"><div align="right">电话:</div></td>
<td class="forumRow"><input name="phone" type="text" class="fram" id="phone" size="40">
<span class="style3">(请留下你的电话,以便回复)</span></td>
</tr>
<tr>
<td class="forumRow">
<div align="right">标题:</div></td>
<td class="forumRow"><input name="title" type="text" class="fram" id="title" size="40">
<span class="forumRow"><span class="style3">*该项为必填项</span></span></td>
</tr>
<tr bgcolor="#EDF5F9">
<td width="18%" height="73" class="forumRowHighlight">
<div align="right">内容:</div></td>
<td height="73" class="forumRowHighlight">
<textarea name="content" cols="60" rows="15" class="fram" id="content"></textarea> </td>
</tr>
<tr>
<td class="forumRow">
<div align="right">发贴版块:</div></td>
<td class="forumRow">
<select name="category" id="category">
<option value="1" selected>普通留言</option>
<option value="16">新时期核心价值观专栏</option>
</select>
<span class="forumRow"><span class="style3">*该项为必填项</span></span></td>
</tr>
<tr>
<td colspan="2" class="forumRow">
<div align="center">
<input type="submit" name="Submit" value="发表" class="fram">
<input type="reset" name="Submit2" value="重写" class="fram">
</div></td>
</tr>
</form>
</table>
`</div></td>
</tr>
</table>
</div>
</body>
</html> #include <IE.au3>
$oIE = _IECreate (@ScriptDir&"\留言.html", 1)
$oQuery1 = _IEGetObjByName ($oIE, "zw")
_IEFormElementOptionSelect($oQuery1, 3);选择职务 byValue
$oQuery2_1 = _IEGetObjByName ($oIE, "example")
_IEFormElementOptionSelect($oQuery2_1, "业务", 1, "byText");选发帖类型 byText
Sleep(100);选择“类型”后触发OnChange事件,延时下让“子类型”刷新数据
$oQuery2_2 = _IEGetObjByName ($oIE, "stage2")
_IEFormElementOptionSelect($oQuery2_1, 2, 1, "byIndex");选发帖类型子类 byIndex 基于0索引
$oQuery4 = _IEGetObjByName ($oIE, "city")
_IEFormElementOptionSelect($oQuery4, 11) ;选所属地市:
$oQuery5 = _IEGetObjByName ($oIE, "unit")
$oQuery5.value = "广东省江门市北郊五福街" ;填写单位
$oQuery6 = _IEGetObjByName ($oIE, "email")
$oQuery6.value = "tjztbk@126.com" ;填写Email
$oQuery7 = _IEGetObjByName ($oIE, "phone")
$oQuery7.value = "0750-888888" ;填写电话号码
$oQuery8 = _IEGetObjByName ($oIE, "title")
$oQuery8.value = "留言标题" ;填写标题
$oQuery9 = _IEGetObjByName ($oIE, "content")
$oQuery9.value = "留言内容" ;填写内容
$oQuery10 = _IEGetObjByName ($oIE, "category")
_IEFormElementOptionSelect($oQuery10, 16) ;选择发帖专题
$oQuery11 = _IEGetObjByName ($oIE, "Submit")
$oQuery11.click ;点击发送发帖专题
;_IEQuit ($oIE) ;关闭IE 非常感谢“komaau3 ”的回复,问题基本解决了!
不过一开始“komaau3 ”的回复中,第13行代码中的变量“$oQuery2_2”写成“$oQuery2_1”,所以一开始调试多次子类无法正确选择,呵呵! 本帖最后由 tjztbk 于 2012-10-24 00:17 编辑
解决问题后的代码贴出来,以便其他比我还菜鸟的(估计有也是很少)学习!呵呵
#include <IE.au3>
$oIE = _IECreate (@ScriptDir&"\留言.html",0,1,0,0)
If WinActivate("信息栏","您注意到信息栏了吗?") Then ;关闭信息栏窗口,不一定所有电脑出现,所以加判断
ControlClick ("信息栏","您注意到信息栏了吗?","Button1")
sleep(100)
EndIf
If ControlCommand (WinGetTitle(""), "", "Button1","IsVisible", "") Then ;这里通过实现按钮判断IE是否弹出安全信息栏(黄条),并通过模拟鼠标键盘完成操作(容许阻止的内容),暂时想不到更好的办法!
ControlClick ( WinGetTitle("") , "","Button1")
sleep(100)
Send("A")
WinActivate("安全警告", "允许活动内容(如脚本和 ActiveX 控件)可能对您有所帮助")
ControlClick ( "安全警告", "允许活动内容(如脚本和 ActiveX 控件)可能对您有所帮助","Button1")
sleep(100)
EndIf
;开始填写内容
$oQuery1 = _IEGetObjByName ($oIE, "zw")
_IEFormElementOptionSelect($oQuery1, 3);选择职务 byValue
_IEFormElementSetValue ($oQuery1, 3) ;选择职务
$oQuery2_1 = _IEGetObjByName ($oIE, "example")
_IEFormElementOptionSelect($oQuery2_1, "队伍建设", 1, "byText");选发帖类型 byText(我测试过这里搜索模式是byIndex也可以实现。)
Sleep(100);选择“类型”后触发OnChange事件,延时下让“子类型”刷新数据
$oQuery2_2 = _IEGetObjByName ($oIE, "stage2")
_IEFormElementOptionSelect($oQuery2_2, 2, 1, "byIndex");选发帖类型子类 byIndex 基于0索引(我测试过这里搜索模式是byText和byValue也都可以实现)
$oQuery4 = _IEGetObjByName ($oIE, "city")
_IEFormElementOptionSelect($oQuery4, 11) ;选所属地市:
$oQuery5 = _IEGetObjByName ($oIE, "unit")
$oQuery5.value = "广东省江门市北郊五福街" ;填写单位
$oQuery6 = _IEGetObjByName ($oIE, "email")
$oQuery6.value = "tjztbk@126.com" ;填写Email
$oQuery7 = _IEGetObjByName ($oIE, "phone")
$oQuery7.value = "0750-888888" ;填写电话号码
$oQuery8 = _IEGetObjByName ($oIE, "title")
$oQuery8.value = "留言标题" ;填写标题
$oQuery9 = _IEGetObjByName ($oIE, "content")
$oQuery9.value = "留言内容" ;填写内容
$oQuery10 = _IEGetObjByName ($oIE, "category")
_IEFormElementOptionSelect($oQuery10, 16) ;选择发帖专题
sleep(3000) ;暂停几秒看看输入有没问题
$oQuery11 = _IEGetObjByName ($oIE, "Submit")
_IEAction($oQuery11 ,"click") ;点击发送发帖专题
sleep(3000) ;暂停等待网页提交
_IEQuit ($oIE) ;关闭IE
mark 好难找啊 之前看过见天用竟然差点找不到 mark 好难找啊 之前看过见天用竟然差点找不到
页:
[1]