《SeleniumBasic 3.141.0.0 - 在VBA中操作瀏覽器》系列文章之十七:網頁選項卡的新建和關閉


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方法,瀏覽器也就退出了。


免責聲明!

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



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