【发布时间】:2021-03-30 01:09:15
【问题描述】:
我想自动化一个测试用例,我需要按项目的数值降序对项目进行排序。对于排序用户故事列表项可能会改变。一开始,他们从头开始看这个values。我为此使用了哈希
var values = $$('div.vertical-list-container div.list-group-item');
var numberHash = { 'One': 1, 'Two': 2, 'Three': 3, 'Four': 4, 'Five': 5, 'Six': 6, 'Seven': 7, 'Eight': 8, 'Nine': 9, 'Ten': 10 };
在我创建了收集所有这些元素的循环之后。
for(var i=0;i<values.length;i++)
{
numberArray.push(numberHash[values[i].getText()])
}
所以现在循环看起来像这样 [1,2,3,4,5,6] 之后,我使用冒泡排序进行降序
function bubble_Sort(a)
{
var swapp;
var n = a.length-1;
var x=a;
do {
swapp = false;
for (var i=0; i < n; i++)
{
if (x[i] < x[i+1])
{
var temp = x[i];
x[i] = x[i+1];
x[i+1] = temp;
swapp = true;
}
}
n--;
} while (swapp);
return x;
}
bubble_Sort(numberArray);
在最后一个循环中,我遇到了问题。
for(var i = 0; i < values.length; i++){
var elem = values[i];
var elemNumber = numberHash[values[i].getText()];
var index = numberArray.findIndex((element) => element == elemNumber);
var target = values[index];
elem.dragAndDrop(target);
}
除 2 之外的所有值都更改了位置。我知道为什么会这样(因为在 .dragAndDrop 函数值 1 低于 6 之后,现在值 2 处于零位置,但循环开始检查下一个位置。 所以现在我按这个顺序排列了值 => this[6,2,5,4,3,1] 而不是 [6,5,4,3,2,1]。有人可以知道如何解决吗?循环中的问题在哪里?我真的需要这个:(
【问题讨论】:
-
既然有
Array.prototype.sort(),为什么还要bubble_Sort()? (这与这个问题有什么关系?) -
我认为这将有助于更清楚地解释问题,而我不知道
Array.prototype.sort()函数!谢谢你,但我的问题仍然没有解决:( -
你应该使用 .sort().reverse() 正如我在回答中解释的那样
标签: javascript node.js for-loop automation webdriver-io