Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用量角器向下滚动到某个元素_Javascript_Scroll_Jasmine_Protractor - Fatal编程技术网

Javascript 使用量角器向下滚动到某个元素

Javascript 使用量角器向下滚动到某个元素,javascript,scroll,jasmine,protractor,Javascript,Scroll,Jasmine,Protractor,我在测试的页面上有一个元素,我必须向下滚动才能看到。当我执行我的测试时,我得到元素在点(94188)处是不可点击的 我尝试了以下方法: dvr.executeScript('window.scrollTo(0,250);'); 但它不起作用。有人知道这是怎么回事吗?我认为这对你很有帮助: dvr.executeScript('window.scrollTo(94,188);').then(function() { element(by.<<here your button

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

我尝试了以下方法:

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

但它不起作用。有人知道这是怎么回事吗?

我认为这对你很有帮助:

dvr.executeScript('window.scrollTo(94,188);').then(function() {
    element(by.<<here your button locator>>).click();
})
dvr.executeScript('window.scrollTo(94188);')。然后(function(){
元素(按)。单击();
})
您的webdriver无法读取该点(1254,21),原因是您的量角器浏览器无法覆盖整个页面您要测试的内容,然后我们发出一个命令,让浏览器滚动到该点(1254,21),然后在
窗口执行单击操作。滚动到(x,x)
解决方案对我不起作用。特别是在测试ripple仿真器时。 我使用
scrollIntoView
方法成功地实现了它

var scrollToScript = 'document.getElementById("ELEMENT ID").scrollIntoView();';

browser.driver.executeScript(scrollToScript).then(function() {
  element(by.id('ELEMENT ID')).click();
  expect(...);
});

现在回答你似乎太晚了。。 但无论如何

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

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

elm.click();
基本上,这允许您滚动到视图中

尝试使用npm模块“sg量角器工具”,在firefox和chrome驱动程序上对我来说很好

这是一种在页面元素上滚动的干净方法,
这里有更多详细信息

我使用了巴塞姆建议的链接,这很有效。步骤如下:

  • 我们必须使用以下命令安装sg量角器工具(如果您没有管理员访问权限,请使用Sudo):

  • 然后代码看起来像这样(我在维基百科上试过)

  • 用法:

    scrollTo(element(by.css("div.someclass")));
    
    免责声明:此代码来自sg量角器工具。

    代码是根据MIT许可证授权的。

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



    可能是我读过的这本书的复制品。它对我不起作用。对我来说很有魅力。在我的例子中,Chrome会通过测试,因为它会自动滚动,但Firefox会失败。使用scrollIntoView,两种浏览器都可以通过测试。谢谢@Rahul!你救了我一天!
    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'))); 
      }
    );
    
    '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")));
    
       scrollToElement: function (element) {
            return element.getLocation().then(function (location) {
                return browser.executeScript('window.scrollTo(' + location.x + ', ' + location.y + ');');
            });
        },