通過添加user-extension.js解決selenium-IDE中的回車和blank問題

通過添加user-extension.js解決錄製回車問題


1. 編寫user-extension.js(文件名可以隨便取),錄製回車的js代碼如下:

Recorder.removeEventHandler('keyDown');

Recorder.addEventHandler('keyDown', 'keydown', function(event) {

var keynum;

if(window.event) // IE

{

keynum = event.keyCode

}

else if(event.which) // Netscape/Firefox/Opera

{

keynum = event.which

}

if(keynum==13){

var _this = this;

var target = _this.findLocator(event.target);

setTimeout(function(){_this.record('keyDown', target,'\\'+keynum); },1000);//延遲1000ms再寫入回車記錄

}

}, { capture: true });

2. 添加腳本到IDE中(option-IDE extensions):

3. 腳本將keydown事件綁定到Selenium系統命令keyDown,並判斷按鍵是否爲13(回車),如果是就在IDE中寫入一條命令,寫入命令使用this.record('keyDown', this.findLocator(event.target),'\\'+keynum);,其中第一個參數是IDE中的Command列,第二個參數爲Target列,第三個參數爲Value列。{ capture: true }表示錄製。

4. 系統命令:在command中可以查到。

5. 其他:可在火狐瀏覽器中輸入地址:

chrome://selenium-ide/content/recorder-handlers.js查看click的系統事件。


通過添加user-extension.js解決blank跳轉問題


1. 問題描述:

在使用Selenium-IDE錄製時,如果錄製頁面有新開頁,回放腳本的時候會報警告<a href="xxx.jsp" target="_blank">,並且會在新窗口打開頁面,但由於無法判斷新窗口的id,所以無法繼續執行腳本中的其他命令。

2. 解決思路:

將原先的click命令替換成open並將href中的值取出付給opentarget。這樣可保證在本頁面打卡,並可正常執行剩下的腳本命令。

3. 腳本代碼:將如下代碼寫入user-extension.js中,並添加到

option-IDE extensions

Recorder.removeEventHandler('clickLocator');

Recorder.addEventHandler('clickLocator', 'click', function(event) {

if (event.button == 0) {

var clickable = this.findClickableElement(event.target);

var href = event.target.getAttribute("href");//event.target是html標籤對象

var blank = event.target.getAttribute("target");

if (clickable) {

if (this.mouseoverLocator) {

this.record('mouseOver', this.mouseoverLocator, '');

delete this.mouseoverLocator;

}

if(blank!=null&&blank.indexOf("blank")>=0){

this.record("waitForElementPresent", this.findLocators(event.target), '');//等待元素加載完成

this.record("open", href, '');

}

else{

this.record("click", this.findLocators(event.target), '');

}

} else {

var target = event.target;

if(blank!=null&&blank.indexOf("blank")>=0){

this.record("waitForElementPresent", this.findLocators(event.target), '');

this.record("open", href, '');

}

else{

this.callIfMeaningfulEvent(function() {

this.record("click", this.findLocators(target), '');

});

}

}

}

}, { capture: true });

注意:回放時爲保證腳本正確執行,最好將回放速度調整爲slow,否則頁面若未加載完成,可能導致有些命令執行失敗。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章