私がテストしているページに、表示するには下にスクロールする必要がある要素があります。テストを実行すると、たとえば要素はポイント(94、188)でクリックできません)になります。
私は以下を試しました:
dvr.executeScript('window.scrollTo(0,250);');
しかし、それはうまくいきませんでした。誰もがこれがどのように機能するか知っていますか?
これはあなたに役立つと思います:
dvr.executeScript('window.scrollTo(94,188);').then(function() {
element(by.<<here your button locator>>).click();
})
webドライバーがそのポイント(1254,21)を読み取れません。理由は、分度器ブラウザーがテストしたいページ全体をカバーできないため、ブラウザーがそのポイント(1254,21)までスクロールするようにコマンドを発行します。 )、クリック操作を実行します
これはあなたに答えるには遅すぎるようです。しかし、とにかく、
次のコードはElement is not clickableエラーを削除するのに役立ちました。
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-protractor-toolsの scroll.js
。
コードは、MITライセンスの下でライセンスされています。
私は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')));
}
);
xpathをこのメソッドに動的に渡し、要素までスクロールします
scrollToElement: function (element) {
return element.getLocation().then(function (location) {
return browser.executeScript('window.scrollTo(' + location.x + ', ' + location.y + ');');
});
},
Npmモジュール「sg-protractor-tools」を使用してみてください。Firefoxとchromeドライバ、
これはページ要素をスクロールするきれいな方法です。詳細はこちら https://www.npmjs.com/package/sg-protractor-tools