Javascript 如何在具有特殊类的表中选择第n个html元素?
我正在使用Nightwatch.js测试一个网站。在该网站上有一张如下所示的表格: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
<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