《SeleniumBasic 3.141.0.0 - 在VBA中操作瀏覽器》系列文章之十二:框架切換


下面以東萍象棋的棋譜搜索頁面為例講解。網址http://www.dpxq.com/hldcg/search/

在該網頁上方,“更改棋庫”后面有個文本框,如果想要用SeleniumBasic修改“大師對局”這幾個字,你需要分析頁面構成,查看該網頁元素位於何處。

按下F12,在開發工具中可以看到:大師對局的id是s_owner,位於框架中。框架的id是search_end_pos。

下面的程序,切換到框架中,定位到文本框和右側的按鈕,修改內容並點擊了“確定”。

    Dim Locator As New SeleniumBasic.ITargetLocator
    WD.Navigate.GoToUrl "http://www.dpxq.com/hldcg/search/"
    Dim frm As SeleniumBasic.IWebElement
    Set frm = WD.FindElementById("search_end_pos")
    WD.SwitchTo.Frame frm
        Dim text As SeleniumBasic.IWebElement
        Set text = WD.FindElementById("s_owner")
        text.Clear
        text.SendKeys "ryueifu"
        Dim OK As SeleniumBasic.IWebElement
        Set OK = WD.FindElementByXPath("//*[@id='topTABLE']/tbody/tr[2]/td[2]/input[2]")
        OK.Click
    WD.SwitchTo.DefaultContent
    Debug.Print WD.PageSource

 另外Frame方法中的identifier參數,可以以下3種類型之一

IWebElement

String

Integer/Long

上面的例子,先定位到iframe元素,再切換。其實也可以不定位,直接切換至指定id或name的框架,或切換至指定編號的框架。以下兩種寫法都是正確的:

WD.SwitchTo.Frame 0 '切換到第0個框架
Debug.Print WD.FindElementById("s_owner").tagName
WD.SwitchTo.DefaultContent

WD.SwitchTo.Frame "search_end_pos" '切換到指定id或name的框架
Debug.Print WD.FindElementById("s_owner").tagName
WD.SwitchTo.DefaultContent


免責聲明!

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



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