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