andyto202 发表于 2014-4-30 21:46:31

【请问网页这个按钮怎么按下去呢???】

本帖最后由 andyto202 于 2014-4-30 21:48 编辑

http://img.photobucket.com/albums/v206/andyto202/sso_zps98472cec.jpg

更新SSO
的那个按钮

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

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

请各位帮忙
感恩

原始码在这里

andyto202 发表于 2014-5-13 22:30:03

怎麼都沒有善心人士回答呢
{:face (319):}

shqf 发表于 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解决了。当然还有其他一些方法,在本论坛搜索一下试试再说吧。

andyto202 发表于 2014-5-15 07:29:59

感謝 shqf 兄的幫忙
我去公司再試試看
並且把測試的過程寫出來
到時候再請你幫我看一下
謝謝
{:face (411):}

andyto202 发表于 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 兄指點一下
感恩
{:face (355):}

shqf 发表于 2014-5-15 10:56:33

IE操作需先获得InternetExplorer 对象的对象变量,要么用_IECreate,要么用_IEAttach,然后才能对页面中的其他元素进行操作啊。你的情况是在弹出这个窗口后,再运行你脚本的,所以要先用_IEAttach获得InternetExplorer 对象的对象变量。试把第4句改成Local $oIE = _IEAttach("SSO 更新 登出") 运行一下看看。

andyto202 发表于 2014-5-15 14:03:40

本帖最后由 andyto202 于 2014-5-15 14:07 编辑

shqf 兄,感謝您的幫忙,剛試好像可以了說
{:face (280):}
不過請問您幾個問題
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 兄 的教導
{:face (125):}

shqf 发表于 2014-5-15 14:28:35

对脚本运行过程中弹出的普通的窗口,一般是先用winwait,再winactivatie激活。然后再_IEAttach 、_IEGetObjByName 。当然也可直接发送关闭窗口的命令winclose().等等很多呵。你多看看帮助吧。按F1.
页: [1]
查看完整版本: 【请问网页这个按钮怎么按下去呢???】