《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方法,浏览器也就退出了。

posted @ 2020-10-03 11:55  ryueifu  阅读(2110)  评论(0编辑  收藏  举报