如何在AngularJS应用程序中使用Protractor禁用动画?

时间:2015-08-23 20:05:01

标签: javascript selenium-webdriver protractor webdriverjs

正如Protractor页面上所建议的那样,我尝试在配置文件中添加以下内容:

onPrepare: function() {

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

    browser.addMockModule('disableNgAnimate', disableNgAnimate);

    browser.getCapabilities().then(function(caps) {
        browser.params.browser = caps.get('browserName');
    });
}

它没有关闭动画。

我正在处理一个动画严重的网站,这会严重影响我的测试......

P.S。我正在使用Protractor的TypeScript定义,这有关系吗?

1 个答案:

答案 0 :(得分:1)

您只停用了ng-animations。

对于我来说,让动画持续时间为1毫秒而不是关闭它会好得多。 (借口代码中的一些动画事件处理程序)

尝试下面的代码会加速CSS动画,所以它可以解决你的问题

onPrepare: function () {
    // disable animations when testing
    var disableAnimation = function () {
        angular.module('disableAnimation', []).run(function ($animate) {

            // disable css animations
            var style = document.createElement('style');
            style.type = 'text/css';
            style.innerHTML = '* {' +
                '-webkit-transition-duration: 1ms !important;' +
                '-moz-transition-duration: 1ms !important;' +
                '-o-transition-duration: 1ms !important;' +
                '-ms-transition-duration: 1ms !important;' +
                'transition-duration: 1ms !important;' +
                '-webkit-animation-duration: 1ms !important;' +
                '-moz-animation-duration: 1ms !important;' +
                '-o-animation-duration: 1ms !important;' +
                '-ms-animation-duration: 1ms !important;' +
                'animation-duration: 1ms !important;' +
                '}';
            document.getElementsByTagName('head')[0].appendChild(style);

            // disable angular ng animations
            $animate.enabled(false);
        });
    };

    browser.addMockModule('disableAnimation', disableAnimation);
}