【问题标题】:Protractor can't find button with $ctrl on ng-click量角器在 ng-click 上找不到带有 $ctrl 的按钮
【发布时间】:2018-03-09 20:09:22
【问题描述】:

我找不到带有这个 $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

【问题讨论】:

    标签: css angularjs selenium xpath protractor


    【解决方案1】:

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

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

    注意:由于 button 是一个 Angular 元素,您必须等待 button 变为 可点击


    更新

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

    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')]"))
    

    【讨论】:

    • 仍然不起作用(我尝试了 browser.waitForAngularEnabled(false) 和 browser.sleep() 的不同组合,仍然找不到按钮)失败:使用定位器找不到元素:By( css 选择器,button.btn.btn-primary.ng-scope > i)
    • 如果我添加这个而不是简单的单击,显然 css 和 xpath 选择器都可以工作: browser.wait(protractor.ExpectedConditions.elementToBeClickable(addVAPButton), 10000).then(function(){ addVAPButton.click ();})
    • 这正是我在回答中作为脚注提到的,如As the button is an Angular Element you have to wait for the button to be clickable。当我使用纯 WebDriver 变体时,我不习惯使用与 protractor 相关的 waiter 语法。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多