下面以东萍象棋的棋谱搜索页面为例讲解。网址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