量角器忽略elementToBeClickable

时间:2017-05-30 12:12:28

标签: jasmine protractor

我希望Protractor / Jasmine在有效按钮时立即点击按钮(它已被通知隐藏了一段时间)。

var wrench = $('div.ibox-tools.ibox-tools-item.dropdown');
browser.wait(expectedConditions.elementToBeClickable(wrench), 50000).then(function() {
      wrench.click();
});

似乎Protractor忽略了这个条件。我收到一个错误:

Failed: unknown error: Element <div class="ibox-tools ibox-tools-item dropdown" uib-dropdown="">...</div> is not clickable at point (842, 145). Other element would receive the click: <div ng-switch-when="true" class="toast-message" ng-bind-html="message">...</div>

怎么会这样?当我在它前面放一个长browser.sleep()时,它就可以工作。

1 个答案:

答案 0 :(得分:1)

如果我深入研究量角器expectedConditions.elementToBeClickable()的源代码,请执行以下操作

  1. 首先检查visibilityOf
  2. 检查visibilityOf表示this,因此会检查是否存在(在您的情况下是在DOM中),然后检查元素isDisplayed
  3. isDisplayed检查元素的可见性,例如可见性属性,请参阅here
  4. 根据消息来源和你说的这是&#34;正确&#34;行为,元素在页面上,元素没有像display:none / visibility: hidden这样的属性。它只是不符合你的期望,因为前面有一个元素。

    我建议采取不同的方法。您是否可以找到通知并等待通知的stalenessOf,然后单击按钮?

    希望有所帮助