下面以東萍象棋的棋譜搜索頁面為例講解。網址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
