AngularJSのE2Eテストフレームワーク、Protractorをつかって、ウィンドウのスクロール位置や、要素の位置とかを取得する方法です。
ウィンドウのスクロール量を取得
jQueryでいう、scrollTop()を取得したい場合です。
getPosition()というメソッドを最初使ったのですが、これはウィンドウそのものの位置で、スクロール位置ではないようなので注意です。
結果として以下の様なコードを書きました。executeScriptでJavascriptを実行、終了したら値をとっているだけです。これについてはもっとよい方法があるような。
script.coffee
browser.executeScript('return document.body.scrollTop;').then (scrollTop) ->
window_scroll_position = scrollTop
- webdriver.WebDriver.Window.getPosition - Protractor
- Testing window.body.scrollTop in protractor - Stack Overflow
要素の位置を取得
要素の位置を取得するには以下のようにします。
script.coffee
element.all(By.css(".someclass")).getLocation().then (someclass_data) ->
someclass_position_y = someclass_data[0].y
someclass_position_x = someclass_data[0].x
getLocation()というメソッドを使って取得可能です。位置を取得するのを待つためにthen
を使います。