我在页面上有一个我正在测试的元素,我必须向下滚动才能看到。当我执行测试时,我得到元素在点(94,188)时无法点击。
我尝试了以下内容:
dvr.executeScript('window.scrollTo(0,250);');
但它没有用。有谁知道这是如何工作的?
答案 0 :(得分:38)
这回答你似乎很晚.. 但无论如何,
以下代码帮助我删除元素无法点击错误。
var elm = element.all(by.css('.your-css-class')).get(9);
browser.executeScript("arguments[0].scrollIntoView();", elm.getWebElement());
elm.click();
基本上这可以让你滚动到你的视图..
答案 1 :(得分:9)
window.scrollTo(x,x)
解决方案对我没用。特别是在测试纹波仿真器时。
我设法使用scrollIntoView
方法使其工作。
var scrollToScript = 'document.getElementById("ELEMENT ID").scrollIntoView();';
browser.driver.executeScript(scrollToScript).then(function() {
element(by.id('ELEMENT ID')).click();
expect(...);
});
答案 2 :(得分:2)
我使用了Bassem建议的链接并且有效。步骤如下:
我们必须使用以下命令安装sg-protractor-tools(如果您没有管理员访问权限,请使用Sudo):
npm install --save-dev sg-protractor-tools
然后代码看起来像这样(我在维基百科上试过这个)
var sgpt = require('sg-protractor-tools');
it ('verify that scroll works', function ()
{
browser.get('http://wikipedia.org');
browser.manage().window().setSize(1000, 1000);
sgpt.scroll.scrollTo(element(by.linkText('Terms of Use')));
}
);
答案 3 :(得分:1)
我认为这对您有所帮助:
dvr.executeScript('window.scrollTo(94,188);').then(function() {
element(by.<<here your button locator>>).click();
})
您的webdriver无法读取该点(1254,21),原因是您的量角器浏览器无法覆盖整个页面您要测试的内容,然后我们给出一个浏览器滚动到该点的命令( 1254,21),然后执行点击操作
答案 4 :(得分:1)
尝试使用npm模块“sg-protractor-tools”,使用firefox和chrome驱动程序,对我来说效果很好,
这是一种在页面元素上滚动的简洁方法, 更多细节https://www.npmjs.com/package/sg-protractor-tools
答案 5 :(得分:1)
动态将xpath传递给此方法,它将滚动到该元素
scrollToElement: function (element) {
return element.getLocation().then(function (location) {
return browser.executeScript('window.scrollTo(' + location.x + ', ' + location.y + ');');
});
},