向下滚动到带有量角器的元素

Scroll down to an element with protractor

本文关键字:量角器 元素 滚动      更新时间:2023-09-26

我正在测试的页面上有一个元素,我必须向下滚动才能看到。例如,当我执行测试时,我得到元素在点 (94, 188) 不可点击

我尝试了以下方法:

dvr.executeScript('window.scrollTo(0,250);');

但它没有用。有谁知道这是如何工作的?

回答你似乎太晚了..但无论如何,

以下代码帮助我删除了"元素不可单击"错误。

var elm = element.all(by.css('.your-css-class')).get(9);
browser.executeScript("arguments[0].scrollIntoView();", elm.getWebElement());
elm.click();

基本上,这允许您滚动到视图。

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(...);
});
'use strict';
/**
 * Vertically scroll top-left corner of the given element (y-direction) into viewport.
 * @param scrollToElement element to be scrolled into visible area
 */
function scrollTo(scrollToElement) {
    var wd = browser.driver;
    return scrollToElement.getLocation().then(function (loc) {
        return wd.executeScript('window.scrollTo(0,arguments[0]);', loc.y);
    });
};

用法:

scrollTo(element(by.css("div.someclass")));

免责声明:此代码来自 sg-量角器工具scroll.js
代码在 MIT 许可证下获得许可。

我认为这对您很有帮助:

dvr.executeScript('window.scrollTo(94,188);').then(function() {
    element(by.<<here your button locator>>).click();
})
你的Web驱动程序无法读取那个点(1254,21),

原因是你的量角器浏览器无法覆盖整个页面你想测试什么,然后我们给出一个命令,浏览器正在滚动到那个点(1254,21),然后执行点击操作

我使用了Bassem建议的链接并且有效。步骤如下:

  1. 我们将不得不使用以下命令安装 sg-量角器工具(如果您没有管理员访问权限,请使用 Sudo):

    npm install --save-dev sg-protractor-tools 
    
  2. 然后代码看起来像这样(我在维基百科上尝试过这个)

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

尝试使用 npm 模块"sg-protractor-tools",对我来说与火狐和 chrome 驱动程序配合得很好,

这是一种在页面元素上滚动的干净方法,更多详情请点击此处 https://www.npmjs.com/package/sg-protractor-tools

将 xpath 动态传递给此方法,它将滚动到元素


   scrollToElement: function (element) {
        return element.getLocation().then(function (location) {
            return browser.executeScript('window.scrollTo(' + location.x + ', ' + location.y + ');');
        });
    },