找回密码
 加入
搜索
查看: 5368|回复: 28

弱弱地问一句:这是不是AutoIT的Bug啊(程序假死)?

[复制链接]
发表于 2008-11-18 10:53:40 | 显示全部楼层 |阅读模式
先说我是初学,偶只是弱弱地问一下这个问题是不是Bug?因为不确定代码是否有误,所以来问问!
下面是执行一个设备升级的代码中的一段,运行之后每次到点击“浏览(fimage)”按钮后都无法执行选择指定的文件,而且GUI每次会死在这个地方!关闭文件选择框后就可以恢复正常,请问高手这是代码错误还是是Bug?
代码片段如下:(所有变量都是在ini文件读取的,还有一个GUI就不写出来了!)
$IE=_IECreate("192.168.20.2/Pages/maintenance.asp",0,1,0,0)
$IE2=_iecreate("192.168.20.2/Pages/about.asp",0,1,1,0)
$get_txt=_IEBodyReadText($IE2)
$check_upgrade=StringRegExp($get_txt,$Upgrade_version,0)
$check_downgrade=StringRegExp($get_txt,$Downgrade_version,0)
$button=_IEGetObjByName($IE,"Upgrade")
$button2=_IEGetObjByName($IE,"fimage")
_IEQuit($IE2)
_IEAction($button2,"click")
$msg=WinExists("选择文件","文件名")
        If $msg=1 Then
                If $check_upgrade=1 Then
                        ControlSetText("选择文件","文件名","Edit1","D:\tmp\1.bin")
                ElseIf $check_downgrade=1 Then
                        ControlSetText("选择文件","文件名","Edit1","D:\tmp\2.bin")
                EndIf
                Sleep(1000)
                ControlClick("选择文件","文件名","Button2","left")
        EndIf
_IEAction($button,"click")
===========================================================
代码的流程大概是:访问$IE、$IE2--->获取$IE2上的版本--->点击$IE的“浏览”按钮--->根据版本选择不同文件(就在这里出问题,假死,而且不能选中文件)--->然后提交重启--->OK了!

附件是程序出现死机的画面,请高手解答,谢谢!()

[ 本帖最后由 xkowen 于 2008-12-1 15:15 编辑 ]

本帖子中包含更多资源

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

×
发表于 2008-11-18 12:25:09 | 显示全部楼层
你这段代码一直在循环中,是会这样的
发表于 2008-11-18 12:26:10 | 显示全部楼层
while 1
     test()
wend
这几句直接改为
text()
 楼主| 发表于 2008-11-18 14:52:48 | 显示全部楼层

回复 3# netegg 的帖子

我就是要一个循环的代码,因为是自动升降级,至少要执行一百遍,        _IEAction($button,"click")后还有个sleep(12000),我刚更新了,以前写忘了!每隔120s执行一次仍然会出现程假死现象,怎么办啊?到底为什么啊?郁闷ing...还有就是为什么无法选中文件啊?
可不可以直接向“type:file”的控件直接发送文本啊?这样就可以避免程序假死了!(没学过网页,求教)
发表于 2008-11-18 15:15:16 | 显示全部楼层
那个就麻烦点了,似乎是需要用句柄变量,其实用autoit做网络相关的东西极其不合适(个人认为),效率太低了
至于你说的type:file,我不是很明白你具体指的是什么

[ 本帖最后由 netegg 于 2008-11-18 15:17 编辑 ]
 楼主| 发表于 2008-11-18 15:31:57 | 显示全部楼层

回复 5# netegg 的帖子

其实这个程序主要是对IP电话之类的设备循环升/降级有用!
Type:file就是上传文件的框,如附件:浏览.jpg
大虾,你还没解答我----为什么上面的代码无法选中文件?谢谢!
发表于 2008-11-18 15:47:10 | 显示全部楼层
你要选中什么类型的文件  *.bin?
 楼主| 发表于 2008-11-18 15:55:38 | 显示全部楼层

回复 7# netegg 的帖子

对,就是二进制的bin文件,这种文件主要是嵌入式系统的升级文件,有部分路由器也是这种升级文件!先解答---为什么上面的代码无法选中文件吧?大虾!
发表于 2008-11-18 15:56:04 | 显示全部楼层
先定义$ie为对象变量$oIE,而且你最好把代码全发上来,好测试,这么猜的话,不是很容易解决问题

[ 本帖最后由 netegg 于 2008-11-18 15:58 编辑 ]
发表于 2008-11-18 15:59:38 | 显示全部楼层
简单的说是参数传递的事情,不过,情况不大好说,要具体分析
 楼主| 发表于 2008-11-18 16:00:30 | 显示全部楼层

回复 9# netegg 的帖子

可不可以给几行代码实例啊?谢谢大虾!
先定义$ie为对象变量$oIE-------好像没有这个必要吧?
发表于 2008-11-18 16:02:12 | 显示全部楼层
先试试把"Edit1"变成$edit1
 楼主| 发表于 2008-11-18 16:18:24 | 显示全部楼层

回复 12# netegg 的帖子

大虾,把"Edit1"变成$edit1后还是无法选中文件,程序仍然会在跳出选择框后出现假死!在想想还有没有别的办法...
发表于 2008-11-18 16:32:34 | 显示全部楼层
假死情况是什么样的,鼠标和一切操作都不行
发表于 2008-11-18 16:36:39 | 显示全部楼层
$oIE的操作选择性大一些,虽说其实没什么大区别
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-17 16:39 , Processed in 0.083050 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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