gpt4 book ai didi

angularjs - Protractor:测试窗口滚动行为

转载 作者:行者123 更新时间:2023-12-03 00:04:51 25 4
gpt4 key购买 nike

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

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

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

我的代码有办法测试这个吗?

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

与这两个问题相关:

Protractor 代码

假设下面的 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
});
});

});

});

最佳答案

这可能不完全是您要问的问题,但是,我们在类似情况下所做的是引入一个可重用的自定义 Jasmine 匹配器,它检查元素是否具有滚动:

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 - Protractor:测试窗口滚动行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36634818/

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