Используя селен с java, мне нужно протестировать кнопку «Вверх», так что я сделал это, чтобы прокрутить страницу до тех пор, пока не отобразится кнопка «Вверх». отображается при прокрутке 25% страницы) и щелкните по ней, эта кнопка приведет пользователя к началу страницы, теперь мне нужно проверить, что она работает, а видимая часть - в верхней части страницы. Как это сделать с помощью java?Selenium, как вы проверяете положение прокрутки
ответ
Общий принцип состоит в том, чтобы проверить значение 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".
Ответ Луи работает, но не полностью совместим с кросс-браузером, так как 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;')