《SeleniumBasic 3.141.0.0 - 在VBA中操作瀏覽器》系列文章之十一:視窗控制代碼與視窗切換
阿新 • • 發佈:2020-09-19
一個瀏覽器可能開啟多個網頁視窗。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-F631E8013BDC18EA9E7F86F0E8F9B1CD
如果要獲取每個視窗的標題、URL、網頁原始碼等操作,必須切換到某個視窗中才能。
SeleniumBasic的ITargetLocator物件用於切換,具有的方法有
- Function ActiveElement() As IWebElement
- Function Alert() As IAlert
- Sub DefaultContent()
- Sub Frame(WE As IWebElement)
- 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.URLNext i
執行上述程式碼,一邊獲取控制代碼,一邊切換進去返回標題資訊。
以上5個方法中,Frame與DefaultContent經常同時出現,用於框架之間的切換。Alert用於處理彈窗資訊。