【已解决】IE弹出选择文件上传窗口,操作无反应
本帖最后由 ap112 于 2014-6-6 14:39 编辑$oBZf=_IETagNameGetCollection($oForm3, "input",2)
_IEAction($oBZf,"click")
WinWait("Choose File to Upload","")
send($Path)
sleep(500)
send("{Enter}")
sleep(500) 坐等解决。。。。。。。 为什么没人回????????????? {:face (270):} {:face (270):} {:face (229):} 为什么?难道没人遇到过???????{:face (229):}
求助呀
本帖最后由 ap112 于 2014-6-5 15:58 编辑没人遇到过这种情况 本帖最后由 shqf 于 2014-6-5 17:24 编辑
楼主没有利用好论坛的搜索功能啊。好多帖子问过这样的问题并得到了解决。
对这类比较特殊的弹出窗口,用一般的_IEAction($oBZf,"click")直接点击,程序会停止在那一句而不再执行下去,好像在等待执行反馈结果,但永远等不到一样。
1、我一开始用的方法最原始,双进程解决。在点击$oBZf前运行另一个程序,之后的操作代码等都写在那个程序内。
2、用_IEAction($oBZf,"focus"),再controlsend发送Enter键,这方法感觉很讨巧,适用在按TAB键后光标能移到这个按钮上的情况。但有时对更变态的java弹出窗口代码也会无效。
3、还记得有一个比较高超,感觉彪悍的方法,原理同双进程,只是代码写在一个脚本内,且全在一行内!好像是用AutoIt3.exe /AutoIt3ExecuteLine,至于这句后面怎么写忘了,唉,你查查吧。 回复 10# shqf
谢谢!
1的方法我之前也用过,显得太没含量了;
2,的方法就是你说的那种变态情况,无效
3的方法貌似很强大,真心没搜索到
我使用以下方法解决的
;$text是网址
$oIE1 = _IECreate($text,1,0,1,1)
$oForm3 = _IEFormGetObjByName ($oIE1, "work_form")
$oBZf=_IETagNameGetCollection($oForm3, "input",2)
_IEAction($oBZf,"focus")
ControlSend($oBZf, "", "", "{space}")
WinActivate($oIE1)
ControlSetText("Choose File to Upload", "", "", $Path )
ControlSend("Choose File to Upload", "", "", "{enter}")
$oBZf=_IETagNameGetCollection($oForm3, "input",3)
_IEAction($oBZf,"click") 回复 11# ap112
$oBZf=_IETagNameGetCollection($oForm3, "input",3),这句是找什么input? 本帖最后由 libo1220 于 2014-10-24 09:13 编辑
楼主我的也是这个问题,帮忙指导指导
我参照过你的代码,但是不行
不知道这句是什么意思: ControlSend($selectFileButton, "", "", "{space}")
html代码:
<BODY background=../_themes/construc/urbtextb.gif aLink=#ff0066 link=#009900 text=#330033 vLink=#996600><BR><FONT class=lemon1 color=#000000>
1、点“<FONT color=#cc3366>Browser</FONT>”按钮,找到您所要粘贴的附件:</FONT>
<P></P>
<P><FONT class=chinese color=#000000>2<SPAN class=lemon1>、选定一个文件后,点“<FONT color=#cc3366>粘贴</FONT>”按钮,将该文件贴到邮件上:</SPAN></FONT> </P>
<FORM id=form1 encType=multipart/form-data method=post name=form1 action=GetFundFile.asp><INPUT value=attchment type=hidden name=sendtype>
<TABLE cellPadding=0 cellspaceing="0">
<TBODY>
<TR>
<TD>附件1:</TD>
<TD><INPUT size=60 type=file name=FILE1></TD>
</TR>
<TR></TR>
<TR></TR>
<TR>
<TD></TD>
<TR>
<TD colSpan=2 align=middle>
<INPUT id=submit1 value=粘贴 type=submit name=submit1>
</TD>
</TR>
</TBODY>
</TABLE>
</FORM>
</BODY>
代码如下:
Local $attachFileForm = _IEFormGetObjByName($oIESelectFile,"form1") ; $oIEGetFundFile
Local $selectFileButton=_IEFormElementGetObjByName($attachFileForm,"FILE1")
Local $attchmentTextfield = _IEFormElementGetObjByName($attachFileForm,"sendtype") ;
Local $file=$filepath&"对帐结果管理.xls"
;MsgBox("","","1")
;_IEAction($selectFileButton,"click")
_IEAction($selectFileButton,"focus")
ControlSend($selectFileButton, "", "", "{space}")
WinActivate($oIE)
ControlSetText("选择要加载的文件", "", "", $file )
ControlSend("选择要加载的文件", "", "", "{enter}")
;$oBZf=_IETagNameGetCollection($attchmentTextfield, "input",2)
_IEAction($attchmentTextfield,"click") ie操作遇到弹窗会阻断了主线程多进程把 或者直接改file输入框的属性 直接写body 回复 14# komaau3
怎么直接写body?刚学的。请教···
页:
[1]
2