ユーザーが下にスクロールしたときに表示されるボタンがページにあります。このため、分度器テストではエラーが発生します。
UnknownError:不明なエラー:要素はポイント(94、188)でクリックできません。
私は使用してみました:
browser.executeScript('window.scrollTo(0,document.body.scrollHeight)');
分度器elementexplorer.jsでテストしたときに機能しましたが、通常のテストでは何もしません。これを回避する他の方法はありますか?
約束が解決されるまで待つ必要があります。次の例は 未解決の問題
_browser.executeScript('window.scrollTo(0,0);').then(function () {
page.saveButton.click();
})
_
Update:これは古い質問(2014年5月)ですが、それでも訪問者がいます。明確にするために:window.scrollTo(0, 0)
は現在のページの左上隅までスクロールします。
ページの一番下までスクロールしたい場合は、呼び出すことができます
window.scrollTo(0, document.body.scrollHeight)
this answer で@jsuserが言及したとおり
より現代的なアプローチは
browser.actions().mouseMove(element).perform();
この回答 で@MartinBlausteinに賛成票を投じる
もっと簡単な方法を見つけました。あなたが使用できる要素にスクロールしたい場合
browser.actions().mouseMove(element).perform();
その後、ブラウザは要素にフォーカスします。
前の回答に追加したいと思いますが、できればもう少し説明してください。
「executeScript」の呼び出しでのこのコード:
'window.scrollTo(0,0);'
あなたがウィンドウの一番下にいたいことがわかっているなら、それが私の目標でした。ここで行ったように、「y」座標に非常に大きな数を入れることができます。
browser.executeScript('window.scrollTo(0,10000);').then(function () {
expect(<some control>.<some state>).toBe(<some outcome>);
})
他の誰かが私のように問題を抱えている場合:
ページの一番下までスクロールして、無限スクロールシナリオで次のデータセットをロードしようとしました。 window.scrollToのさまざまなバリエーションとarguments [0] .click()を試しましたが、成功しませんでした。
最後に、ページをスクロールするには、ウィンドウ内の要素をクリックして「ウィンドウ」にフォーカスを移動する必要があることに気付きました。それから、window.scrollTo(0、document.body.scrollHeight)は魅力的でした!
サンプルコード:
element(by.className('<any element on page>')).click();
browser.executeScript('window.scrollTo(0,document.body.scrollHeight)').then(function(){
//whatever you need to check for here
});
ユーティリティヘルパーを作成し、それをページオブジェクト(またはテストファイル自体)内で使用すると役立つことがわかりました。これは私にとってうまくいくようです:
module.exports = {
scrollIntoView: function(el) {
browser.executeScript(function(el) {
el.scrollIntoView();
}, el.getWebElement());
}
}
var scrollIntoView = require('../utils').scrollIntoView;
module.exports = {
clickBackBtn: function() {
var el = element(by.buttonText('Go back'));
scrollIntoView(el);
el.click();
return;
}
}
it('should allow the user to go back to the profile page', function() {
PageObject.clickBackBtn();
expect(browser.getCurrentUrl()).toContain('/user/profile');
});
この質問の答えは一番上に正解とマークされました。しかし、アップグレード後、最新のchrome v54。
browser.actions().mouseMove(element).perform();
長いページの最上部または最下部に移動するだけの場合は、「HOME」キーを使用して最上部に移動するか、「END」キーを使用して最下部に移動します。
例えば:
browser.actions().sendKeys(protractor.Key.HOME).perform();
または
browser.actions().sendKeys(protractor.Key.END).perform();
他の方法では、これを試すことができます:
this.setScrollPage = function (element) {
function execScroll() {
return browser.executeScript('arguments[0].scrollIntoView()',
element.getWebElement())
}
browser.wait(execScroll, 5000);
};