量角器无法在ng-click元素上找到带有css的元素

时间:2015-03-11 01:20:26

标签: javascript angularjs testing css-selectors protractor

HTML:

<button class="helperButton ng-scope" ng-if="!isDisabled && displayHelper( 'none' )" ng-click="select( 'none', $event );" type="button">  ×  Select None</button>

尝试找到:

element(by.css('button[ng-click="select( \'none\', $event );"]'));

得到错误:

  

失败:找不到使用定位器的元素:   By.cssSelector(“button [ng-click = \”select('none',$ event); \“]”)

此链接提供了解决方案AngularJS Protractor - Finding an Element on a Page Using Ng-Click Binding,但没有详细介绍其引用的功能。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

基于ng-click的定位器不太可靠且可读。

相反,我会依赖按钮文本

by.xpath('//button[contains(., "Select None")]')

或,在

by.css('button.helperButton')

或者,如果可以控制应用程序HTML模板 - 添加id属性并使用:

by.id('mybuttonid')

如果您仍想使用ng-click - 尝试使用starts-with CSS选择器语法检查ng-click属性:

by.css('button[ng-click^=select]')