《SeleniumBasic 3.141.0.0 - 在VBA中操作瀏覽器》系列文章之十一:窗口句柄與窗口切換


一個瀏覽器可能打開多個網頁窗口。Selenium中每個窗口都有一個句柄,句柄是一個文本字符串。Selenium在任何時刻只能操作和讀寫1個窗口,要操作其他窗口必須用SwitchTo切換進去。

 

 假設瀏覽器中打開了百度、京東、新浪。下面的代碼可以返回每個窗口的句柄

    Dim windows() As String
    windows = WD.WindowHandles
    For i = 0 To UBound(windows)
        Debug.Print windows(i)
    Next i

立即窗口打印如下結果:

CDwindow-99175AB43E76632E809F8A1DBAB051D7
CDwindow-63759CACCD0CDD50084616C84EA8344C
CDwindow-F631E8013BDC18EA9E7F86F0E8F9B1CD

如果要獲取每個窗口的標題、URL、網頁源代碼等操作,必須切換到某個窗口中才能。

SeleniumBasic的ITargetLocator對象用於切換,具有的方法有

  1. Function ActiveElement() As IWebElement
  2. Function Alert() As IAlert
  3. Sub DefaultContent()
  4. Sub Frame(WE As IWebElement)
  5. Sub Window(windowName As String)

本節使用的是第5個方法,Window方法,作用是切換到指定句柄的窗口中。

    Dim windows() As String
    Dim Locator As New SeleniumBasic.ITargetLocator
    windows = WD.WindowHandles
    Set Locator = WD.SwitchTo
    For i = 0 To UBound(windows)
        Locator.Window windows(i)
        Debug.Print windows(i), WD.Title, WD.URL
    Next i

運行上述代碼,一邊獲取句柄,一邊切換進去返回標題信息。

 

 以上5個方法中,Frame與DefaultContent經常同時出現,用於框架之間的切換。Alert用於處理彈窗信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM