找回密码
 加入
搜索
查看: 5107|回复: 7

[网络通信] 【请问网页这个按钮怎么按下去呢???】

[复制链接]
发表于 2014-4-30 21:46:31 | 显示全部楼层 |阅读模式
本帖最后由 andyto202 于 2014-4-30 21:48 编辑



更新SSO
的那个按钮

它是在认证网页后所弹出来的小视窗

有没有可能在不用知道它的URL的情况下
把它当一般的应用程式处理
按下那个按钮

请各位帮忙
感恩

原始码在这里

本帖子中包含更多资源

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

×
 楼主| 发表于 2014-5-13 22:30:03 | 显示全部楼层
怎麼都沒有善心人士回答呢
发表于 2014-5-14 17:05:25 | 显示全部楼层
你提供的资讯太少了啊,你的脚本呢?至少关键处的几行代码提供一下吧!
现在这样的情况下回答这个问题要费劲了,正好我闲着无聊,看看能不能帮你解决。
无相关脚本,不知你掌握AUTOIT的程度,由简到易,一步一步来吧:
1、查此窗口的源码,此按钮有name,有id,则_IEAttach附加到实例,再获取按钮对象,再点击,这是基本的操作。这点应该知道吧,否则多看看帮助,下面的可暂时不再看了。如认为这步不存在问题,则到第2步
2、脚本中应该有那么一句:WinWait("SSO更新", ""),在其后插一句magbox,看能否弹出。弹出的,证明之前的代码没问题,之后的代码即还是第1 步中所述的_IEAttach或_IEGetObjById、_IEAction等有问题。
3、如上未弹出,可能是WinWait语句或之前的问题,判断方法之一可在WinWait前插一句magbox,看能否弹出,弹出 的是WinWait的问题。否则就是你碰到了一种比较特殊的弹出窗口,此时简单的方法是再开一个进程用WinWait解决了。当然还有其他一些方法,在本论坛搜索一下试试再说吧。
 楼主| 发表于 2014-5-15 07:29:59 | 显示全部楼层
感謝 shqf 兄的幫忙
我去公司再試試看
並且把測試的過程寫出來
到時候再請你幫我看一下
謝謝
 楼主| 发表于 2014-5-15 09:02:34 | 显示全部楼层
我剛才試了一下
還是試不出來
我把我寫的列出來
#include <IE.au3>
If WinExists("SSO 更新 登出 - Windows Internet Explorer") Then
   WinActivate("SSO 更新 登出 - Windows Internet Explorer")
   Local $oIE = _IE_Example("refreshform")
   Local $oSubmit = _IEGetObjByName($oIE, "refreshButn")
   _IEAction($oSubmit, "click")
EndIf
下面是我要按下 更新 sso 的原始碼
<form action="javascript:get(document.getElementById('refreshform'));" method="post" name="refreshform" id="refreshform">
                                        <input type="button" style="width:60px;height:20px;font-size:12" name="refreshButn" id="refreshButn" value="更新SSO" title="可延長IE使用SSO時間,以免因SSO逾時而需重新登入。" onclick="javascript:get(this.parentNode);miniwin();">
                                        <input type="hidden" name="askTime" id="askTime" value="">
                                        <input type="hidden" name="activeRefresh" id="activeRefresh" value="act">
                                        <input type="hidden" name="pcIP" id="pcIP" value="10.24.8.3">
                                </form>
請 shqf 兄指點一下
感恩
发表于 2014-5-15 10:56:33 | 显示全部楼层
IE操作需先获得InternetExplorer 对象的对象变量,要么用_IECreate,要么用_IEAttach,然后才能对页面中的其他元素进行操作啊。你的情况是在弹出这个窗口后,再运行你脚本的,所以要先用_IEAttach获得InternetExplorer 对象的对象变量。试把第4句改成Local $oIE = _IEAttach("SSO 更新 登出") 运行一下看看。
 楼主| 发表于 2014-5-15 14:03:40 | 显示全部楼层
本帖最后由 andyto202 于 2014-5-15 14:07 编辑

shqf 兄,感謝您的幫忙,剛試好像可以了說

不過請問您幾個問題
1.Local $oIE = _IEAttach("SSO 更新 登出") 這句有沒 有Local 的差別是??
2._IEAttach("SSO 更新 登出") 裡面的 SSO 更新 登出 指的是 title 嗎,我2、3行好像不用寫成
SSO 更新 登出 - Windows Internet Explorer,寫 SSO 更新 登出 就行了
3.如果我改按登出 sso 按鈕時,它會再彈出一個確認的視窗,那個視窗的原始碼是
function closeSSO() {
                var str = "確定登出SSO?" ;
                if(confirm(str)) {
                        try {
                        }
                        catch(e){
                        }
                        
                        flag = 1;
                        location.href="https://nims.cht.com.tw/SSOLogout.jsp";
                        
                        try {
                        }
                        catch(err) {
                        }
                }
        }
我知道可以按 tab + enter 去關掉它
但是如何用您教的 _IEAttach + _IEGetObjByName 去做呢
還是因為這是 javascript 的 確認視窗
所以沒有 name 或 id 可以擷取
就不能用
_IEAttach + _IEGetObjByName

再次感謝 shqf 兄 的教導
发表于 2014-5-15 14:28:35 | 显示全部楼层
对脚本运行过程中弹出的普通的窗口,一般是先用winwait,再winactivatie激活。然后再_IEAttach 、_IEGetObjByName 。当然也可直接发送关闭窗口的命令winclose().等等很多呵。你多看看帮助吧。按F1.
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-2 16:34 , Processed in 0.082496 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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