Javascript 如何在具有特殊类的表中选择第n个html元素?

Javascript 如何在具有特殊类的表中选择第n个html元素?,javascript,html,css,testing,nightwatch.js,Javascript,Html,Css,Testing,Nightwatch.js,我正在使用Nightwatch.js测试一个网站。在该网站上有一张如下所示的表格: <tr> <td class="sorting_1">...</td> <td class="sorting_2">...</td> <td class="sorting_3">...</td> <td class="sorting_3">...</td> </tr&g

我正在使用Nightwatch.js测试一个网站。在该网站上有一张如下所示的表格:

<tr>
    <td class="sorting_1">...</td>
    <td class="sorting_2">...</td>
    <td class="sorting_3">...</td>
    <td class="sorting_3">...</td>
</tr>
我可以使用以下命令获取文本:

.getText('td[class="sorting_2"]', function(result){
    this.assert.equal(result.value, 'Testbenutzer');
})
但是,如果我想从上面列表中两个定义相同的元素中选择一个,我必须做什么呢。最后两个元素都具有类
排序\u 3
。如何使用特殊类获取表的第n个元素。 我已经试过了:

'td:nth-of-type(1)[class="sorting_3"]'
'td:nth-child(1)[class="sorting_3"]'
'td[class="sorting_3"]:nth-child(1)'
'td:nth-child(3)'
这些都不管用。如何操作?

您可以使用
[]
符号选择第一个或第二个,以此类推

//td[@class="sorting_3"][1]
//td[@class="sorting_3"][2]
1
2
的值分别对应于第一个和第二个

函数查找节点(选择器、回调)
{
var结果=文件。评估(选择器,文件);
var node=result.iterateNext();
while(节点){
回调(节点);
node=result.iterateNext();
}
}
查找节点('//td[@class=“sorting_3”][1]”,函数(节点){
node.style.backgroundColor='浅绿色';
});
查找节点('//td[@class=“sorting_3”][2]”,函数(节点){
node.style.backgroundColor='lightblue';
});

福
酒吧
巴兹
库克斯
您可以使用
[]
符号选择第一个或第二个等

//td[@class="sorting_3"][1]
//td[@class="sorting_3"][2]
1
2
的值分别对应于第一个和第二个

函数查找节点(选择器、回调)
{
var结果=文件。评估(选择器,文件);
var node=result.iterateNext();
while(节点){
回调(节点);
node=result.iterateNext();
}
}
查找节点('//td[@class=“sorting_3”][1]”,函数(节点){
node.style.backgroundColor='浅绿色';
});
查找节点('//td[@class=“sorting_3”][2]”,函数(节点){
node.style.backgroundColor='lightblue';
});

福
酒吧
巴兹
库克斯
您可以使用
[]
符号选择第一个或第二个等

//td[@class="sorting_3"][1]
//td[@class="sorting_3"][2]
1
2
的值分别对应于第一个和第二个

函数查找节点(选择器、回调)
{
var结果=文件。评估(选择器,文件);
var node=result.iterateNext();
while(节点){
回调(节点);
node=result.iterateNext();
}
}
查找节点('//td[@class=“sorting_3”][1]”,函数(节点){
node.style.backgroundColor='浅绿色';
});
查找节点('//td[@class=“sorting_3”][2]”,函数(节点){
node.style.backgroundColor='lightblue';
});

福
酒吧
巴兹
库克斯
您可以使用
[]
符号选择第一个或第二个等

//td[@class="sorting_3"][1]
//td[@class="sorting_3"][2]
1
2
的值分别对应于第一个和第二个

函数查找节点(选择器、回调)
{
var结果=文件。评估(选择器,文件);
var node=result.iterateNext();
while(节点){
回调(节点);
node=result.iterateNext();
}
}
查找节点('//td[@class=“sorting_3”][1]”,函数(节点){
node.style.backgroundColor='浅绿色';
});
查找节点('//td[@class=“sorting_3”][2]”,函数(节点){
node.style.backgroundColor='lightblue';
});

福
酒吧
巴兹
库克斯

我能想到的访问多个
.sorting_3
元素的唯一方法,是在不知道
Nightwatch.js
实际工作原理的情况下,将其传递给兄弟
~
组合选择器

i、 e:当您想从
元素中选择第一个元素时,您可以这样做:

.getText('td[class="sorting_3"]', function(result){
    this.assert.equal(result.value, 'Testbenutzer');
})
对于第二个要素:

.getText('td[class="sorting_3"] ~ td[class="sorting_3"]', function(result){
    this.assert.equal(result.value, 'Testbenutzer');
})
等等

问题是,这种方法是不可伸缩的。您需要提前知道
.sorting_3
选择器中需要多少元素


希望这有帮助。

我能想到的访问多个
.sorting_3
元素的唯一方法是,在不知道
Nightwatch.js
实际工作原理的情况下,将其传递给兄弟
~
组合选择器

i、 e:当您想从
元素中选择第一个元素时,您可以这样做:

.getText('td[class="sorting_3"]', function(result){
    this.assert.equal(result.value, 'Testbenutzer');
})
对于第二个要素:

.getText('td[class="sorting_3"] ~ td[class="sorting_3"]', function(result){
    this.assert.equal(result.value, 'Testbenutzer');
})
等等

问题是,这种方法是不可伸缩的。您需要提前知道
.sorting_3
选择器中需要多少元素


希望这有帮助。

我能想到的访问多个
.sorting_3
元素的唯一方法是,在不知道
Nightwatch.js
实际工作原理的情况下,将其传递给兄弟
~
组合选择器

i、 e:当您想从
元素中选择第一个元素时,您可以这样做:

.getText('td[class="sorting_3"]', function(result){
    this.assert.equal(result.value, 'Testbenutzer');
})
对于第二个要素:

.getText('td[class="sorting_3"] ~ td[class="sorting_3"]', function(result){
    this.assert.equal(result.value, 'Testbenutzer');
})
等等

问题是,这种方法是不可伸缩的。您需要提前知道
.sorting_3
选择器中需要多少元素


希望这有帮助。

我能想到的访问多个
.sorting_3
元素的唯一方法是,在不知道
Nightwatch.js
实际工作原理的情况下,将其传递给兄弟
~
组合选择器

i、 e:当您想从
元素中选择第一个元素时,您可以这样做:

.getText('td[class="sorting_3"]', function(result){
    this.assert.equal(result.value, 'Testbenutzer');
})
对于第二个要素:

.getText('td[class="sorting_3"] ~ td[class="sorting_3"]', function(result){
    this.assert.equal(result.value, 'Testbenutzer');
})
等等

问题是,这种方法是不可伸缩的。您需要提前知道
.sorting_3
选择器中需要多少元素


希望这能有所帮助。

您可以使用Jack提出的解决方案(
//td[@class=“sorting_3”][1]
),但您必须将Nightwatch设置为使用xPath作为定位策略。从您收到的错误中,您的默认定位策略似乎是
CSS
。请参见

您可以使用Jack提出的解决方案(
//td[@class=“sorting_3”][1]
),但您必须将Nightwatch设置为使用xPath作为定位策略。从你所犯的错误中,你的de