量角器在ng-click上找不到带有$ ctrl的按钮

时间:2018-03-08 12:47:56

标签: css angularjs selenium xpath protractor

我找不到带有量角器的这个$ ctrl部件的按钮。 按钮示例:

<button class="btn btn-primary ng-scope" ng-click="$ctrl.openProfileModal()" ng-if="$ctrl.admin &amp;&amp; $ctrl.networkInfo.scenario !== 'simple_mesh'" 
ng-disabled="$ctrl.stats['5G'].full &amp;&amp; $ctrl.stats['2G'].full"><i class=""></i>Add virtual AP</button>

合理的解决方案似乎是用ng-click搜索:

addVAPButton = element(by.css('[ng-click="$ctrl.openProfileModal()"]'))

但它不起作用。我尝试了各种逗号组合,按类搜索,通过ng-if,通过xpath,尝试将id,name,其他属性添加到此按钮,但没有任何帮助Selenium找到它。我可以通过ng-click,name,id,model找到页面中没有$ ctrl的其他元素,所以我怀疑有一些关于$ ctrl与量角器不兼容的东西。达到此按钮的任何解决方案或解决方法?

量角器版本:5.3.0 角度版本:1.5.11

2 个答案:

答案 0 :(得分:0)

要查找文本为添加虚拟AP 的按钮,您可以使用以下代码行:

addVAPButton = element(by.css("button.btn.btn-primary.ng-scope > i"))

注意:由于按钮 Angular Element ,您必须等待按钮 < EM>可点击

更新

作为替代方案,您可以尝试以下任一选项:

addVAPButton = element(by.css("button.btn.btn-primary.ng-scope"))

或者

addVAPButton = element(by.xpath("//button[@class='btn btn-primary ng-scope' and contains(.,'Add virtual AP')]"))

答案 1 :(得分:0)

找到一种适用于任何选择器的方法(css,ng-click,id,name,xpath,等等):

addVAPButton = $("[ng-click=\"$ctrl.openProfileModal()\"]");
browser.wait(protractor.ExpectedConditions.elementToBeClickable(addVAPButton), 10000).then(function(){
addVAPButton.click();})