Javascript 如何验证casperjs中的排序(升序和降序)功能

Javascript 如何验证casperjs中的排序(升序和降序)功能,javascript,testing,casperjs,columnsorting,Javascript,Testing,Casperjs,Columnsorting,我不熟悉这个框架,也不知道如何使用CasperJS测试排序功能 场景是,我需要使用排序功能验证搜索结果。 当我搜索任何关键字时,它会显示所有可能的匹配结果 您必须定义自己的比较函数。例如,这里有一个以不区分大小写的方式比较词典编纂字符串顺序的示例: function cmpLexiInsAsc(a, b) { return a.toLowerCase() < b.toLowerCase(); } function cmpLexiInsDesc(a, b) { return

我不熟悉这个框架,也不知道如何使用CasperJS测试排序功能

场景是,我需要使用排序功能验证搜索结果。 当我搜索任何关键字时,它会显示所有可能的匹配结果


您必须定义自己的比较函数。例如,这里有一个以不区分大小写的方式比较词典编纂字符串顺序的示例:

function cmpLexiInsAsc(a, b) {
    return a.toLowerCase() < b.toLowerCase();
}
function cmpLexiInsDesc(a, b) {
    return a.toLowerCase() > b.toLowerCase();
}
PhantomJS 1.x中有一个罕见的错误:n个子CSS选择器。您可以尝试通过helper函数使用CasperJS中支持的XPath选择器:

var x = require('casper').selectXPath;
...
casper.getElementsInfo(x("//table[@id='tableId']//tr["+rowIndex+"]/td["+colIndex+"]/span/span"));

请注意,CasperJS构建在PhantomJS之上,具有相同的限制。不能在页面上下文casper.evaluate之外直接处理DOM元素。您需要事先获得此类元素的表示形式。我通过访问从getElementsInfo返回的对象的text属性来实现这一点。

或者我们也可以使用sort进行升序,使用reverse进行降序。无需设置任何条件,即可获取内容并使用sort函数对其进行排序并将其存储在变量中。现在设置一些条件,获取这些内容并将其存储在另一个变量中。现在比较两个变量。
casper.then(function(){
    casper.test.assert(compare.call(this, 1, " > span > span.info", cmpLexiInsAsc), "Column 1 ascending");
    this.click("some selector to change ordering");
});

casper.then(function(){
    casper.test.assert(compare.call(this, 2, " > div > span.info", cmpLexiInsDesc), "Column 2 descending");
});
var x = require('casper').selectXPath;
...
casper.getElementsInfo(x("//table[@id='tableId']//tr["+rowIndex+"]/td["+colIndex+"]/span/span"));