所以我会直接跳到它......
我是一名测试自动化工程师,我正在制作一个由 JSON 驱动的“关键字驱动”测试系统,它与 Selenium 测试结合以在 Web 浏览器上运行。
“关键字”存储为 XML 文件,我有一个 JavaScript 函数,它将这些关键字加载到一个数组中,并存储该关键字的索引。到 paf.keywordIndex
例子
$.get("getSteps.php", function(keywords) {
paf.keywords = eval(keywords); // stores into an array...
paf.keywordIndex = -1;
for ( var i = 0 ; i < paf.keywords.length ; i++ ) {
// for each path...
/* alert(paf.keywords[i]); */
$.ajax({url: "./_keywords/" + paf.keywords[i], success: function(xml) {
paf.xml = xml;
paf.keywordIndex++;
var title = $(xml).find("keyword").attr("title");
//var name = $(xml).find("keyword").attr("name");
paf.buffer += ("<option value=\"./_keywords/"+paf.keywords[paf.keywordIndex]+"\">"+title+"</option>");
},
async: false
//cache: false
});
}
$(stepSelectionLocator).html(paf.buffer);
});
getSteps.php
是一个 php 服务,它返回一个 json 数组中的所有 xml 关键字。例如
["Login.xml","EndSession.xml", "SelectResult.xml", etc...]
现在这个函数可以工作了,但唯一的问题是,它没有以任何方式排序。所以输出将是 -
- 登录 (Login.xml)
- 选择一个结果 (SelectResult.xml)
- 结束会话 (EndSession.xml)
为了解决这个问题,我在 my so 中添加了一个额外的属性,<keyword>
现在它<keyword area="basic">
表明这是一个基本步骤。现在我的功能是 -
$.get("getSteps.php", function(keywords) {
paf.keywords = eval(keywords); // stores into an array...
paf.keywordIndex = -1;
for ( var i = 0 ; i < paf.keywords.length ; i++ ) {
// for each path...
/* alert(paf.keywords[i]); */
$.ajax({url: "./_keywords/" + paf.keywords[i], success: function(xml) {
paf.xml = xml;
paf.keywordIndex++;
var title = $(xml).find("keyword").attr("title");
var area = $(xml).find("keyword").attr("area");
//var name = $(xml).find("keyword").attr("name");
paf.buffer.push(area.toUpperCase() + ": " + title);
},
async: false
//cache: false
});
}
paf.buffer.sort(); // array is sorted...
paf.buffer2 = "";
paf.keywordIndex = -1;
for ( var a in paf.buffer ) {
paf.keywordIndex++;
paf.buffer2 += "<option value=\"./_keywords/"+paf.keywords[paf.keywordIndex]+"\">"+ paf.buffer[a] + "</option>";
}
$(stepSelectionLocator).html(paf.buffer2.toString().replace(",", ""));
});
现在输出是
- 基本:结束会话 (Login.xml)
- 基本:登录(SelectResult.xml)
- 结果:选择一个结果(EndSession.xml)
所以我已经确定索引是问题所在。但是,我无法找到解决此问题的方法..
我对替代方案持开放态度,因此,如果您找到一种更简单的索引方法,请告诉我!