返回列表 上一主題 發帖

[發問] vba判斷是否已登入網頁

[發問] vba判斷是否已登入網頁

請問該如何在以下程式碼加入判斷式條件判斷如果進入登入網址http://10.178.1.140:8023/Login.aspx時,如果找不到登入id"txtUserName",則直接跳至查詢數據網址http://10.178.1.140:8023/ConditionPage/ConditionAgentDay.aspx,並繼續往下執行


如果未登入時,則由上至下自動執行
----------------------------------------------------------------
Sub 自動登入()
Dim a As Object
Set myIE = CreateObject("InternetExplorer.Application")
With myIE
  .Visible = False
  .Navigate "http://10.178.1.140:8023/Login.aspx" '登入網址  <<<進入登入網址

     Do While .ReadyState <> 4
        DoEvents
     Loop

Set a = .document.all.tags("INPUT")
  .document.all.txtUserName.innertext = "XXXXX" '登入帳號  <<<如果找不到登入id,則直接進入查詢數據網址
  .document.all.txtPassword.innertext = "XXXXX" '登入密碼
  .document.all.btnLogin.Click '點選登入按鈕

     Do Until .ReadyState = 4
        DoEvents
     Loop

  .Navigate "http://10.178.1.140:8023/ConditionPage/ConditionAgentDay.aspx" '查詢數據網址

  ........程式碼......
*宅女一枚無誤*

回復 3# jcchiang


   j大對不起,可能跟我不懂程式碼邏輯有關,目前遇到問題是,如果照著程式碼由上往下執行=登入網頁>執行登入>轉換到查詢網頁>執行其他動作。但如果當天已經執行過一次或已經登入後需要再執行一次以上程式碼,就會執行到.document.all.txtUserName.innertext = "XXXXX" '登入帳號 出現錯誤訊息


因為已經是登入狀態,即便輸入登入網址.Navigate "http://10.178.1.140:8023/Login.aspx" '登入網址


系統ㄝ會自己轉換到"http://10.178.1.140:8023/ConditionPage/ConditionAgentDay.aspx" '查詢數據網址,因此在查詢網址頁面由上至下執行登入動作就會出現異常。


想請問有什麼方式可以判斷ㄧ開始進入登入網頁時,如果直接轉換到查詢網頁代表已經登入過了,就直接往查詢數據網址以下程式繼續執行。


我是這個意思啦!不會表達或表達錯誤請原諒~~~
*宅女一枚無誤*

TOP

回復 5# jcchiang    j大~~~我加入以下紅色程式碼成功解決問題了,感謝熱心回覆ㄛ!!!

Sub 自動登入()
On Error GoTo ErrorHandler
Dim a As Object
Set myIE = CreateObject("InternetExplorer.Application")
With myIE
  .Visible = False
.Navigate "http://10.178.1.140:8023/Login.aspx" '登入網址

     Do While .ReadyState <> 4
        DoEvents
     Loop

Set a = .document.all.tags("INPUT")
  .document.all.txtUserName.innertext = "XXXXX" '登入帳號
  .document.all.txtPassword.innertext = "XXXXX" '登入密碼
  .document.all.btnLogin.Click '點選登入按鈕

     Do Until .ReadyState = 4
        DoEvents
     Loop

ErrorHandler:
  .Navigate "http://10.178.1.140:8023/ConditionPage/ConditionAgentDay.aspx" '查詢數據網址

  ........程式碼......
*宅女一枚無誤*

TOP

回復 7# GBKEE

   G大~~超級感謝,不過可以再跟你請教最近遇到的問題嗎~~~~以下是測試步驟,主要發生問題是在紅色部份
Sub TEST()
Set myIE = CreateObject("InternetExplorer.Application")
With myIE
  .Visible = True
  .Navigate "http://forum.twbts.com/index.php" '進入麻辣家族討論區
  Do While .Busy Or .readyState <> 4: DoEvents: Loop


  .document.all.mycredits.Click '點選進入我的帖子,但開啟網頁時是自動開啟一個新的分頁,而且畫面不會自動切換到新分頁頁籤(畫面仍停留在原頁面)
  Application.Wait Now + TimeValue("0:00:2") '等待2秒
  .Navigate "http://forum.twbts.com/my.php?item=threads" '進入我的帖子(使用原頁面轉換到我的帖子,非切換到分頁)
  Application.Wait Now + TimeValue("0:00:2") '等待2秒
  .document.all.mn_viewthread_1.Click '點選進入論壇版規
End With
End Sub



問題1. 因為公司使用IE8,每人電腦速度快慢不一,以下執行結果有人電腦慢就會跑到最後一步點選進入論壇版規時發生錯誤,因為上一步進入我的帖子網頁根本還沒跑出來(還在轉),等待2秒對他們而言算太快,但對電腦快的人如果等待2秒以上又覺得太慢
想請問有什麼辦法可以自動偵測網頁是否已運行完成再執行下一步嗎?而不是用固定秒數計時。


問題2. 因為點選進入我的帖子時,公司的IE8開啟網頁時是自動開啟一個新的分頁,但畫面不會自動切換到新分頁頁籤(畫面仍停留在原頁面)
想請問有什麼方式可以在點選進入我的帖子後畫面自動切換到新分頁頁籤,醬也就不用再多一步  .Navigate "http://forum.twbts.com/my.php?item=threads" '進入我的帖子(使用原頁面轉換到我的帖子,非切換到分頁) 了
*宅女一枚無誤*

TOP

回復 9# GBKEE


   G大~~~請問執行時第3段 Dim myIE As New InternetExplorer 出現錯誤訊息「使用者自訂型態尚未定義」是為什麼呢??
*宅女一枚無誤*

TOP

回復 9# GBKEE


   G大對不起~~~~~我看到第一段備註了'請先將專案 [設定引用項目]加入  Microsoft Internet Controls

沒事~~~沒事~~~
*宅女一枚無誤*

TOP

回復 9# GBKEE


   對了!!忘記跟你說,非常感謝~~~~~~~~又解決了一個我滿腦子的問題!!!!
*宅女一枚無誤*

TOP

        靜思自在 : 有智慧才能分辨善惡邪正;有謙虛才能建立美滿人生。
返回列表 上一主題