扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
成都创新互联基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业服务器托管报价,主机托管价格性价比高,为金融证券行业服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。
通过添加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录制时,如果录制页面有新开页,回放脚本的时候会报警告,并且会在新窗口打开页面,但由于无法判断新窗口的id,所以无法继续执行脚本中的其他命令。
2.解决思路:
将原先的click命令替换成open并将href中的值取出付给open的target。这样可保证在本页面打卡,并可正常执行剩下的脚本命令。
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,否则页面若未加载完成,可能导致有些命令执行失败。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流