【问题标题】:Protractor: Testing window scroll behavior量角器:测试窗口滚动行为
【发布时间】:2016-08-06 16:46:20
【问题描述】:

我需要测试窗口是否不滚动 if overflow: hidden 应用于body标签。

不幸的是,scrollTo 和任何 jQuery 等效项实际上确实滚动(或设置位置)窗口,即使应用了溢出:隐藏。

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

我的代码有什么方法可以对此进行测试吗?

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

与这两个问题有关:

量角器代码

假设下面的 mywebpage 可以滚动但有溢出:hidden set

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 
          });
      });

    });

  });

【问题讨论】:

    标签: angularjs unit-testing protractor


    【解决方案1】:

    这可能不是您要问的,但是,我们在类似案例中所做的是引入了一个可重用的自定义茉莉花匹配器,它检查元素是否有滚动条

    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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 2014-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多