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

时间:2014-11-19 18:01:29

标签: javascript scroll jasmine protractor

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

我尝试了以下内容:

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

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

6 个答案:

答案 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建议的链接并且有效。步骤如下:

  1. 我们必须使用以下命令安装sg-protractor-tools(如果您没有管理员访问权限,请使用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'))); 
      }
    );
    

答案 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 + ');');
        });
    },