2014-09-08 2 views
6

Используя селен с java, мне нужно протестировать кнопку «Вверх», так что я сделал это, чтобы прокрутить страницу до тех пор, пока не отобразится кнопка «Вверх». отображается при прокрутке 25% страницы) и щелкните по ней, эта кнопка приведет пользователя к началу страницы, теперь мне нужно проверить, что она работает, а видимая часть - в верхней части страницы. Как это сделать с помощью java?Selenium, как вы проверяете положение прокрутки

ответ

15

Общий принцип состоит в том, чтобы проверить значение window.pageYOffset в браузере. Если кнопка прокручивает полностью назад к вершине, то window.pageYOffset должно иметь значение 0. Предполагая, что переменная driver держит ваш WebDriver экземпляр:

JavascriptExecutor executor = (JavascriptExecutor) driver; 
Long value = (Long) executor.executeScript("return window.pageYOffset;"); 

Вы можете проверить, что value 0. executeScript используется для запуска JavaScript-код в браузере.

Этот ответ изначально упоминается scrollY, но нет поддержки для него в IE. MDN page on it, говорит:

Для кросс-браузерной совместимости, используйте window.pageYOffset вместо window.scrollY. Кроме того, более старые версии Internet Explorer (< 9) не поддерживают ни одно свойство и должны быть обработаны путем проверки других нестандартных свойств. Полностью совместимый пример:

var supportPageOffset = window.pageXOffset !== undefined; 
var isCSS1Compat = ((document.compatMode || "") === "CSS1Compat"); 

var x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft; 
var y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop; 

Благодаря R. Oosterholt для "Heads Up".

4

Ответ Луи работает, но не полностью совместим с кросс-браузером, так как Internet Explorer не поддерживает window.scrollY. Я рекомендую вместо этого использовать window.pageYOffset - это возвращает одно и то же значение, но совместимо с кросс-браузером.

Источник: https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY

Вот выше блок кода с измененным кодом:

JavascriptExecutor executor = (JavascriptExecutor) driver; 
Long value = (Long) executor.executeScript("return window.pageYOffset;"); 

Кроме того, синтаксис Ruby (что я использую для моей текущей позиции, предполагая, как и прежде, что экземпляр драйвера доступно через имя переменной, «водитель»):

driver.execute_script('return window.pageYOffset;')