selenium 獲取當前框架 窗體焦點
selectFrame(locator)
在當前窗體中選擇一個框架(你可以多次呼叫這個命令用於選擇巢狀框架)。要選擇父框架,用”relative=parent”作為定位器;要選擇頂級框架,用”relative=top”。你同樣可以通過基於0的索引號選擇框架;用”index=0”選擇第一個框架,或者用”index=2”選擇第三個框架。
selectWindow(windowID)
選擇一個彈出窗體;一旦一個彈出窗體被選中,所有的命令將指向該窗體。要再次選擇主窗體,將物件設定為null。
注意:window的內在JavaScript的”name”屬性和被給與的window文件(通常是你實際看到的,作為終端使用者,在窗體的標題欄上)的”title”之間有一個很大的不同。”name”對於終端使用者通常是不可見的;它是作為第二個引數”windowName”傳遞給JavaScript函式window.open(url,windowName,windowFeatures,replaceFlag)(被Selenium擷取)。
Selenium有許多方法用於查詢被”windowID”引數所提及的窗體物件。
1.) 如果windowID為null,(或是字串”null”),則假定為使用者是提交給由瀏覽器最初例項化的窗體。
2.) 如果”windowID”引數的值是當前應用窗體的一個JavaScript變數名,則假定該變數包含一個由呼叫JavaScript window.open()函式所產生的返回值。
3.) 另外,selenium looks in a hash it maintains that maps string names to window “names”.
4.) 如果失敗了,我們將迴圈遍歷所有已知的窗體以便試圖找出適合的”title”。由於”title”不是必須唯一,因此可能會產生一些非期望的行為。
如果很難判定你所要操作的窗體的名稱,你可以檢視為識別通過window.open(被Selenium擷取)所開啟窗體的名稱時所產生的selenium 日誌訊息。在每個窗體被開啟時,你通常可以看到如下資訊:
debug: window.open call intercepted; window ID (你可以用於 selectWindow()) is “myNewWindow”
在某些情況,Selenium會無法擷取window.open的呼叫(例如,如果該呼叫發生在”onLoad”事件之間或之前)。(該BUG標記為SEL-339)。在這些情況,你可以使用Selenium的openWindow命令強制Selenium去通告開啟窗體的名稱,使用一個空(blank) url,像這樣:openWindow(“”,”myFunnyWindow”)。
引數:
·windowID – 要選擇窗體的JavaScript 窗體ID
WindowFocus()
selenium.MouseMove("id=A_P1100");selenium.MouseOver("id=A_P1100");selenium.MouseDown("id=A_P1100");selenium.Click("id=A_P1100");
注:id=A_P1100 北京市ID
當輸入框輸入資訊,那麼提交按鈕才可用,之前一直在使用selenium.Type("id=userName", userName); 來實現,但在回放過程中提交按鈕一直沒法啟用,後來發現是滑鼠事件問題導致,調整後代碼為:
selenium.KeyDown("id=ctaskName", "d"); selenium.KeyPress("id=ctaskName", "d"); selenium.KeyUp("id=ctaskName", "d");
selenium.Type("id=userName", userName);
首先啟用提交按鈕,然後再來輸入資訊,就OK了。