在Modal中使用Select2时,角量角器测试失败



我正试图用量角器运行我的角端测试。有些情况下,select存在于模态中。根据运行测试的机器,这有时会失败,因为量角器无法找到使用:

的选择。

NoSuchElementError: No element found using locator: By.cssSelector("div#s2id_items”)

在较慢的机器上,它每次都有效,而在较快的机器上,它经常失败。我的猜测是,当量角器试图访问选择器时,模态仍然是动画的,因此,导致失败。

我已经尝试禁用动画没有成功的代码下面的onPrepare指令在我的量角器配置:

var disableNgAnimate = function() {
  angular.module('disableNgAnimate', []).run(['$animate', function($animate) {
    $animate.enabled(false);
  }]);
};
browser.addMockModule('disableNgAnimate',disableNgAnimate);

我使用的是angular 1.4.3, bootstrap 3.3.5, protractor 2.1.0。

感谢编辑:

1 -我没有使用显式等待,我也不想这样做,因为这些要么会大大降低测试速度,要么在某些情况下仍然容易失败。

您可以尝试使用预期条件来等待,例如:

var EC = protractor.ExpectedConditions;
var myElement= element(by.css('div#s2id_items'));
browser.wait(EC.presenceOf(myElement), 5000);
//rest of your code

这个等待不会减慢测试的速度,因为它只会等待足够长的时间来显示元素,如果没有显示,则在5秒后失败。

编辑:对于可点击的动画对象,您可以尝试内置的"elementToBeClickable"条件(只是替换上述示例中的presenceOf),或者编写自己的条件,这将做任何您喜欢的事情(函数返回true或false)。端到端测试应该像用户一样"思考",用户会等待动画结束,所以也许最好还是使用显式等待动画。

相关内容

  • 没有找到相关文章

最新更新