Прокрутка Into View с определенными параметрами

63
4

У меня есть свиток, который уже работает, но я думал сделать его умнее.

Это мой код до сих пор

((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView(true);", element);

который подключается к моему прослушивателю событий OnClicking - поэтому всякий раз, когда он нажимает на элемент, сначала он прокручивает его в представлении.

Это здорово, и он делает то, что я хочу, но при выполнении моих тестов моя страница прокручивается вверх и вниз, даже если элемент находится посередине экрана.

Поэтому мой вопрос заключается в том, как установить параметр в этом случае, если элемент находится ниже 3/4 на экране просмотра, а затем прокручивается?

спросил(а) 2021-01-25T18:58:26+03:00 4 месяца, 2 недели назад
1
Решение
64

Я думаю. Можешь попробовать.

var element = driver.FindElement(By.Xpath("//*/blabla"));
var js = driver as IJavaScriptExecutor;
js.ExecuteScript("window.scrollTo(" + element.Location.X + ","+(element.Location.Y - 100) + ");");

ответил(а) 2021-01-25T18:58:26+03:00 4 месяца, 2 недели назад
44

Вы можете использовать javascript для получения корней X/Y:

var cumulativeOffset = function(element) {
var top = 0, left = 0;
do {
top += element.offsetTop || 0;
left += element.offsetLeft || 0;
element = element.offsetParent;
} while(element);

return {
top: top,
left: left
};
};

В этом случае вам нужна координата Y. И используйте это: http://www.w3schools.com/jsref/met_win_scrollto.asp

Или... взгляните на это: Javascript scrollIntoView() среднее выравнивание?

ответил(а) 2021-01-25T18:58:26+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема