javascript - Protractor 等待动画完成

标签 javascript html protractor

在我们的应用程序中,我们有一些问题需要回答,这些问题会更新进度条。目前,我有一个等待 HTML 属性更改的函数,它适用于大多数情况,但它对进度条有点挑剔,因为当进度条从 0-10% 等移动时,动画会持续 1-2 秒。所以失败我目前面临的问题是:Expected 11 to be within range 12, 14

代码:

Util.prototype.waitForAttributeChange = function (el, attr, time) {
    var timeout = time || 0,
        currentAttr;

    el.getAttribute(attr).then(function (val) {
        currentAttr = val;
        return currentAttr;
    }).then(function () {
        return browser.wait(function () {
            return el.getAttribute(attr).then(function (val) {
                return val !== currentAttr;
            });
        }, timeout);
    });
};

用法:

Util.waitForAttributeChange(Page.progressBar(), 'style', 10000).then(function () {
    expect(Page.getProgressBarValue()).toBeWithinRange(12, 14);
};

问题:抓取的值不是进度条的最终结果,抓取的时候还在移动(因为我的函数是等待属性变化的,此时属性确实发生了变化)

问题:有没有其他方法可以让我等待动画,特别是等待它完成?和/或这是否可能不使用 browser.sleep()

最佳答案

您可以使用 Expected Conditions 解决此问题.

每当我需要等待元素可见然后等待它消失后再执行下一步时,我都会使用以下方法。这对于可能会阻止与其他元素交互的临时确认模式很有帮助。

let waitTimeInSeconds = 15;
let EC = protractor.ExpectedConditions;

secondsToMillis(seconds) {
    return seconds * 1000;
}

waitToBeVisible(element: ElementFinder) {
    browser.wait(EC.visibilityOf(element), this.secondsToMillis(waitTimeInSeconds), 'The element \'' + element.locator() + '\' did not appear within ' + waitTimeInSeconds + ' seconds.');
}

waitToNotBeVisible(element: ElementFinder) {
    browser.wait(EC.not(EC.visibilityOf(element)), this.secondsToMillis(waitTimeInSeconds), 'The element \'' + element.locator() + '\' still appeared within ' + waitTimeInSeconds + ' seconds.');
}

关于javascript - Protractor 等待动画完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37657552/

相关文章:

javascript - 如何将 .show() 更改为 .toggle() 而不重复函数中的项目(我如何重构)

javascript - iOS 4 上 HTML5 音频的限制?播放列表、背景等

javascript - Outlook.com 应用程序 - 如何创建预填充 HTML 正文的事件

html - 页脚问题

java - 如何在 Java 中去除文本和 Html 字符串

javascript - Angular 2 - Protractor 测试 : Cannot find name 'element' and 'name'

javascript - Protractor :您可以选择一个绑定(bind)而不将其包装在元素中吗?

javascript - 获取倒数第二个出现并捕获其后的字符串

jquery - 单击选项卡时,边框顶部颜色必须与事件选项卡背景颜色相同

javascript - Protractor 异步执行问题