Selenium技術在一個瀏覽器中只能操作訪問一個網頁,很多情況下還需要在新窗口中打開其他網頁,本帖借助執行JavaScript腳本的方式打開新的網頁,然后利用SwithTo在各個窗口句柄里切換。
IWebDriver對象的WindowHandles是一個字符串數組,存儲的是每個網頁的句柄(句柄是一個字符串,不是數字)。
下面的程序,一開始打開百度,然后連續新建3個窗口,打開新浪、京東、淘寶。
WD.New_ChromeDriver Service:=Service, Options:=Options Dim Utility As SeleniumBasic.Utility Dim windows() As String Dim goal As String Set Utility = New SeleniumBasic.Utility WD.url = "https://www.baidu.com/" Utility.Sleep 1000 WD.ExecuteScript "window.open('https://www.sina.com.cn/')" Utility.Sleep 1000 WD.ExecuteScript "window.open('https://www.jd.com/')" Utility.Sleep 1000 WD.ExecuteScript "window.open('https://www.taobao.com/')" Utility.Sleep 1000 windows = WD.WindowHandles For i = 0 To UBound(windows) WD.SwitchTo.Window windows(i) Debug.Print WD.url, WD.Title If WD.url Like "*jd*" Then goal = windows(i) End If Utility.Sleep 1000 Next i WD.SwitchTo.Window goal Utility.Sleep 1000 WD.Close '關閉京東 Utility.Sleep 1000 Debug.Print UBound(WD.WindowHandles) + 1 '剩下多少個窗口

可以看出,就連訪問每個網頁的標題等簡單信息,也必須切換過去才能訪問。程序執行到最后,使用Close方法關閉了京東。

如果瀏覽器中把最后一個網頁也給Close了,那么此時相當於Quit方法,瀏覽器也就退出了。
