我正在写一个量角器测试,并且无法识别我想点击一个角页面的按钮。当我检查此按钮上的元素时,我附加了按钮的屏幕截图以及Chrome中看到的内容。在这个页面上有4个按钮紧挨着彼此,我很难区分它们。当我检查元素时,它们看起来都一样。在我的代码中,我可以使用CSS来查找这个元素,还是必须使用不同的标识符?无法识别一个元素我正在尝试点击一个角页面
在我的测试我要点击“新记录”按钮
我正在写一个量角器测试,并且无法识别我想点击一个角页面的按钮。当我检查此按钮上的元素时,我附加了按钮的屏幕截图以及Chrome中看到的内容。在这个页面上有4个按钮紧挨着彼此,我很难区分它们。当我检查元素时,它们看起来都一样。在我的代码中,我可以使用CSS来查找这个元素,还是必须使用不同的标识符?无法识别一个元素我正在尝试点击一个角页面
在我的测试我要点击“新记录”按钮
至少有2种方式来做到这一点,如果你没有正确的唯一标识符
1.元素(by.buttonText('New Record'))
这已在评论中提及,另请参阅the docs
2.创建它
的方法你可以为它创建一个方法与filter,像这样
/**
* Get a specific tile based on a given search string
* or a element number
* @param {number | string } needle
* @return {ElementFinder}
*/
function getTile(needle) {
var tiles = $$('md-grd-tile');
// Just a quick and dirty check, better to use
// lodash for it with `_.isNumber(needle)`
if (!isNaN(parseFloat(needle))) {
return tiles.get(needle);
}
return tiles.filter(function(tile) {
return tile.getText()
.then(function(text) {
return text.indexOf(needle) > -1;
});
}).first();
// If you use arrow functions it will be this
//return tiles.filter(
// (tile) => tile.getText()
// .then((text) => text.indexOf(needle) > -1)).first();
}
// You can then use it like this
getTile('New Record').click();
// Or like this
getTile(0).click();
通过过滤器,你可以或提供你想要的瓦片的数量(从0开始)或者提供瓦片按钮/描述的(部分)文本。
希望它有帮助
谢谢您的建议。不幸的是,元素(by.buttonText('New Record'))无效。在与我的经理讨论之后,我们可能会拖延量角器测试几个月。所以我会回到这里,然后尝试你的第二个建议。 –
'by.buttonText('New Record')'? http://www.protractortest.org/#/api?view=ProtractorBy.prototype.buttonText如果这不起作用,只需添加一个适当的类或ID以便于选择。 – jonrsharpe