找回密码
 加入
搜索
查看: 10819|回复: 33

一个典型的弹出窗口问题(IE类函数处理完后,不能点击弹出窗口)

 火... [复制链接]
发表于 2009-5-19 00:20:37 | 显示全部楼层 |阅读模式
本帖最后由 maoying 于 2009-5-22 22:55 编辑

[问题解决,分类改不了,麻烦版主了]
想通过Au3开无线路由

弹出如图的提示,试过很多种代码,总是点不了。图:alert.gif

代码如下:#include <IE.au3>
;-----------------点登录对话框----------------------
Run('C:\Program Files\Internet Explorer\IEXPLORE.EXE 192.168.1.1')
WinWait("Connect to 192.168.1.1","")
If Not WinActive("Connect to 192.168.1.1","") Then WinActivate("Connect to 192.168.1.1","")
WinWaitActive("Connect to 192.168.1.1","")
;Send("{ENTER}")                                                                                                        ;这个也可以
ControlClick("Connect to 192.168.1.1", "OK", "[CLASS:Button;INSTANCE:2]","left",1)        ;点OK按钮
;------------------操作---------------------------
$oIE = _IEAttach ("TL-WR340G 54M无线宽带路由器","Title")
$oFrame = _IEFrameGetObjByName ($oIE, "bottomLeftFrame")
_IELinkClickByText ($oFrame, "无线参数")
$oFrame = _IEFrameGetObjByName ($oIE, "mainFrame")
$oForm = _IEFormGetCollection ($oFrame, 0)
_IEFormElementCheckboxSelect ($oForm, 2, "ap", 1, "byValue")        ;开启无线功能
$oQuery = _IEFormElementGetObjByName ($oForm, "Save")
_IEAction($oQuery ,"click")                                                                                    ;点"保存"
;-----------------点登确认重启对话框-----------------
WinWait("Windows Internet Explorer", "")
If Not WinActive("Windows Internet Explorer", "") Then WinActivate("Windows Internet Explorer", "")
WinWaitActive("Windows Internet Explorer", "")
ControlClick("Windows Internet Explorer", "OK", "[CLASS:Button;INSTANCE:1]","left",1)

红色部分老是点不了图中的对话框

请问有什么方法吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2009-5-19 11:11:36 | 显示全部楼层
看样子是title的问题?你的title和提示框的title不一致
发表于 2009-5-19 12:18:06 | 显示全部楼层
窗口名称不对
你仔细看看是什么字母
 楼主| 发表于 2009-5-19 19:26:52 | 显示全部楼层

啊,对

但改完后还是照样不行,重启电脑也试过了,还是不行
难道代码还有错?
(代码如下)
#include <IE.au3>
;-----------------点登录对话框----------------------
Run('C:\Program Files\Internet Explorer\IEXPLORE.EXE 192.168.1.1')
WinWait("Connect to 192.168.1.1","")
If Not WinActive("Connect to 192.168.1.1","") Then WinActivate("Connect to 192.168.1.1","")
WinWaitActive("Connect to 192.168.1.1","")
;Send("{ENTER}")                                                                                                        ;这个也可以
ControlClick("Connect to 192.168.1.1", "OK", "[CLASS:Button;INSTANCE:2]","left",1)        ;点OK按钮
;------------------操作---------------------------
$oIE = _IEAttach ("TL-WR340G 54M无线宽带路由器","Title")
$oFrame = _IEFrameGetObjByName ($oIE, "bottomLeftFrame")
_IELinkClickByText ($oFrame, "无线参数")
$oFrame = _IEFrameGetObjByName ($oIE, "mainFrame")
$oForm = _IEFormGetCollection ($oFrame, 0)
_IEFormElementCheckboxSelect ($oForm, 2, "ap", 1, "byValue")        ;开启无线功能
$oQuery = _IEFormElementGetObjByName ($oForm, "Save")
_IEAction($oQuery ,"click")                                                                                    ;点"保存"
;-----------------点登确认重启对话框-----------------
WinWait("Microsoft Internet Explorer", "")
If Not WinActive("Microsoft Internet Explorer", "") Then WinActivate("Microsoft Internet Explorer", "")
WinWaitActive("Microsoft Internet Explorer", "")
ControlClick("Microsoft Internet Explorer", "OK", "[CLASS:Button;INSTANCE:1]","left",1)
;ControlSend("Microsoft Internet Explorer", "OK", "[CLASS:Button;INSTANCE:1]","{ENTER}")
 楼主| 发表于 2009-5-19 21:24:52 | 显示全部楼层
本帖最后由 maoying 于 2009-5-19 21:26 编辑

自己顶一个
等……
发表于 2009-5-20 16:52:39 | 显示全部楼层
ControlClick("Windows Internet Explorer", "OK", "[CLASS:Button;INSTANCE:1]","left",2)
网页对话框有时要点两下才行的
另外如果是JS弹出的对话框,必需要用多线程解决
 楼主| 发表于 2009-5-20 19:25:53 | 显示全部楼层
本帖最后由 maoying 于 2009-5-20 19:27 编辑

两下的也试过了,不行

从window info中看是这样的,IE里的源码是<INPUT class=button id=Save type=submit value="保 存" name=Save>,不知道是不是JS

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2009-5-21 22:43:28 | 显示全部楼层

想不通啊
 楼主| 发表于 2009-5-22 21:10:40 | 显示全部楼层
发现无线路由设置页面里有段代码<center><form action="WlanNetworkRpm.htm" enctype="multipart/form-data" method="get" onSubmit="return doSubmit();">
以及
function doSubmit()
{……}
估计是js吧?

就将红色的代码改为:
;-----------------点登确认重启对话框-----------------
AdlibEnable("myadlib")
Exit

Func myadlib()
        If Not WinActive("Microsoft Internet Explorer","无线网络设置的更改将") Then WinActivate("Microsoft Internet Explorer","无线网络设置的更改将")
             If WinActive("Microsoft Internet Explorer","无线网络设置的更改将") Then
         Send("{ENTER}")
                ControlClick("Microsoft Internet Explorer", "OK", "[CLASS:Button;INSTANCE:1]","left",1)
     EndIf
EndFunc

但好像还是不能点中那个框
 楼主| 发表于 2009-5-22 22:51:10 | 显示全部楼层
发现确实是js,参考了_IEAction 的第二个例子,解决了
据说是js把返回的值给拿去用了,没有返回,程序就一直假死

代码如下:
#include <IE.au3>
;-----------------点登录对话框----------------------
Run('C:\Program Files\Internet Explorer\IEXPLORE.EXE 192.168.1.1')
WinWait("Connect to 192.168.1.1","")
If Not WinActive("Connect to 192.168.1.1","") Then WinActivate("Connect to 192.168.1.1","")
WinWaitActive("Connect to 192.168.1.1","")
ControlClick("Connect to 192.168.1.1", "OK", "[CLASS:Button;INSTANCE:2]","left",1)        ;点OK按钮
;ControlSend("Connect to 192.168.1.1","","[CLASS:Button;INSTANCE:2]", "{ENTER}")                                ;这个也可以
;Send("{ENTER}")                                                                                                                                                                ;这个也可以
;------------------操作---------------------------
$oIE = _IEAttach ("TL-WR340G 54M无线宽带路由器","Title")
$oFrame = _IEFrameGetObjByName ($oIE, "bottomLeftFrame")
_IELinkClickByText ($oFrame, "无线参数")
$oFrame = _IEFrameGetObjByName ($oIE, "mainFrame")
$oForm = _IEFormGetCollection ($oFrame, 0)
_IEFormElementCheckboxSelect ($oForm, 2, "ap", 1, "byValue")        ;开启无线功能
;----------------------------------------------------------
$oQuery = _IEFormElementGetObjByName ($oForm, "Save")
;~ $oIE = _IEAction($oQuery ,"click")                                                                                    ;点"保存" _IELoadWait($oIE)
$hwnd = _IEPropertyGet($oIE, "hwnd")
_IEAction ($oQuery, "focus")
ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")

; Wait for Alert window, then click on OK
WinWait("Microsoft Internet Explorer", "无线网络设置的更改将")
ControlClick("Microsoft Internet Explorer", "无线网络设置的更改将", "[CLASS:Button; Instance:1;]")
;-------------------询问关机------------------------------
$return = MsgBox(4,"shutdown","shutdown in 60 seconds", "60")
Select
        Case $return = -1
                Run(@ComSpec & " /c " & 'shutdown -f -s', "", @SW_HIDE)
        Case $return = 6
        Run(@ComSpec & " /c " & 'shutdown -f -s', "", @SW_HIDE)
    Case $return = 7
                Exit
EndSelect

发现有问题还是要靠自己解决啊!
发表于 2009-6-6 16:55:34 | 显示全部楼层
很好,很好哈...
发表于 2009-6-6 16:55:41 | 显示全部楼层
很好,很好哈...
发表于 2009-6-8 22:51:39 | 显示全部楼层
不用点击呢 用 Y 或AIT加Y   看看
发表于 2009-6-8 23:21:17 | 显示全部楼层
不错啊,学习+学习楼主精神
发表于 2009-6-8 23:21:23 | 显示全部楼层
不错啊,学习+学习楼主精神
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-17 17:44 , Processed in 0.076084 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表