web-dev-qa-db-ja.com

分度器で要素まで下にスクロール

私がテストしているページに、表示するには下にスクロールする必要がある要素があります。テストを実行すると、たとえば要素はポイント(94、188)でクリックできません)になります。

私は以下を試しました:

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

しかし、それはうまくいきませんでした。誰もがこれがどのように機能するか知っていますか?

12
andrepm

これはあなたに役立つと思います:

dvr.executeScript('window.scrollTo(94,188);').then(function() {
    element(by.<<here your button locator>>).click();
})

webドライバーがそのポイント(1254,21)を読み取れません。理由は、分度器ブラウザーがテストしたいページ全体をカバーできないため、ブラウザーがそのポイント(1254,21)までスクロールするようにコマンドを発行します。 )、クリック操作を実行します

1
rajana sekhar

これはあなたに答えるには遅すぎるようです。しかし、とにかく、

次のコードはElement is not clickableエラーを削除するのに役立ちました。

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

Elm.click();

基本的に、これによりビューにスクロールできます。

39
Rahul Reddy

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(...);
});
9
Junior Ales
'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-protractor-toolsscroll.js
コードは、MITライセンスの下でライセンスされています。

5
James Lawson

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

xpathをこのメソッドに動的に渡し、要素までスクロールします


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

Npmモジュール「sg-protractor-tools」を使用してみてください。Firefoxとchromeドライバ、

これはページ要素をスクロールするきれいな方法です。詳細はこちら https://www.npmjs.com/package/sg-protractor-tools

1
Bassem