angularjs – 量角器:测试窗口滚动行为

前端之家收集整理的这篇文章主要介绍了angularjs – 量角器:测试窗口滚动行为前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果溢出,我需要测试窗口是否不滚动:隐藏应用于body标签.

不幸的是,即使应用了overflow:hidden,scrollTo和任何jQuery等效实际上都会滚动(或设置位置)窗口.

WebDriverJS / Protractor缺少“Window().scroll”方法.

有没有办法我的代码可以测试这个?

我发现奇怪的另一件事是window().getPosition()似乎没有拉同一个浏览器窗口,因为在下面的测试中,如果你尝试使用Protractor的getPosition,即使你已经执行了,窗口位置仍然是0,0浏览器中的脚本.

与这两个问题相关:

> Scroll down to an element with protractor
> Protractor: Scroll down

量角器代码

假设mywebpage下面可以滚动但有溢出:隐藏集

describe('My webpage',function() {
    beforeEach(function() {
        browser.get('https://127.0.0.1/mywebpage');
        browser.driver.manage().window().setSize(1400,800);                  
        browser.driver.manage().window().setPosition(0,0);
    });
  
    it('Scrolling y is disabled',function() {
        var scrollFunction = function() { 
            window.scrollTo(0,55);
        };
        var getOffsetTop = function() { 
            return document.body.scrollTop; 
        };
        browser.executeScript(scrollFunction).then(function (yes) {
            browser.executeScript(getOffsetTop).then(function (newposition) {
                expect(newposition).toBe(0);
            });
        });
    
    });

    it('Scrolling y is disabled looking at Protractor Window',function() {
      var scrollFunction = function() { 
          window.scrollTo(0,55);
      };
      var getOffsetTop = function() { 
          return document.body.scrollTop; 
      };
      browser.executeScript(scrollFunction).then(function (yes) {
          browser.driver.manage().window().getPosition().then(function (newposition) {
              expect(newposition.getY()).toBe(0); // This is falsely true,if your scrolling y is enabled,this still remains position 0 
          });
      });

    });

  });

解决方法

这可能不是你所要求的,但是,我们在类似情况下所做的是引入一个可重用的自定义茉莉花匹配器来检查元素是否有滚动:

toHaveScroll: function() {
    return {
        compare: function(elm) {
            return {
                pass: protractor.promise.all([
                    elm.getSize(),elm.getAttribute("scrollHeight")
                ]).then(helpers.spread(function (size,scrollHeight) {
                    return scrollHeight >= size.height;
                }))
            };
        }
    };
},

用法

expect(elm).toHaveScroll();

猜你在找的Angularjs相关文章