1

我正在尝试使用量角器运行我的角度 e2e 测试。我遇到了一些在模态中存在选择的情况。根据运行测试的机器,这有时会失败,因为量角器找不到选择:

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 和量角器 2.1.0。

谢谢

编辑:

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

4

1 回答 1

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”条件(只需替换上面示例中的 presentOf),或者编写您自己的,这将做任何您喜欢的事情(函数返回 true 或 false)。E2E 测试应该像用户一样“思考”,并且用户会等待动画结束,所以最好还是使用显式等待动画。

于 2015-08-04T11:35:35.343 回答