gpt4 book ai didi

javascript - Angular Protractor 测试因 Modal 内的 Select2 失败

转载 作者:行者123 更新时间:2023-11-28 00:00:58 25 4
gpt4 key购买 nike

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

NoSuchElementError:使用定位器找不到元素:By.cssSelector(“div#s2id_items”)

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

我尝试使用 Protractor 配置中 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 - 我没有使用显式等待,而且我也不想这样做,因为这会大大减慢测试速度,或者在某些情况下仍然容易失败。

最佳答案

您可以尝试使用 Expected Conditions用于等待,如:

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)。 E2E 测试应该像用户一样“思考”,并且用户会等待动画结束,所以也许最好使用显式等待动画。

关于javascript - Angular Protractor 测试因 Modal 内的 Select2 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31808088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com