2017-05-29 42 views
0

我正在写一个量角器测试,并且无法识别我想点击一个角页面的按钮。当我检查此按钮上的元素时,我附加了按钮的屏幕截图以及Chrome中看到的内容。在这个页面上有4个按钮紧挨着彼此,我很难区分它们。当我检查元素时,它们看起来都一样。在我的代码中,我可以使用CSS来查找这个元素,还是必须使用不同的标识符?无法识别一个元素我正在尝试点击一个角页面

在我的测试我要点击“新记录”按钮

Screenshot of browser and inspection panel

+0

'by.buttonText('New Record')'? http://www.protractortest.org/#/api?view=ProtractorBy.prototype.buttonText如果这不起作用,只需添加一个适当的类或ID以便于选择。 – jonrsharpe

回答

0

至少有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开始)或者提供瓦片按钮/描述的(部分)文本。

希望它有帮助

+0

谢谢您的建议。不幸的是,元素(by.buttonText('New Record'))无效。在与我的经理讨论之后,我们可能会拖延量角器测试几个月。所以我会回到这里,然后尝试你的第二个建议。 –

相关问题