Я пытаюсь отслеживать координаты мыши в браузере Selenium.
В Selenium нет функций отслеживания мыши. Он имеет только функции MoveByOffset(int x, int y)
и MoveToElement(IWebElement)
. Мне нужно установить пользовательские позиции и перейти к ним с помощью функции MoveByOffset(int x, int y)
.
Selenium позволяет использовать сценарий JavaScript, но, похоже, не позволяет запускать сценарий в фоновом режиме и извлекать значения из указанного Фоновая функция:
Мы могли бы выполнить что-то вроде:
document.onmousemove = function(e)
{
var x = e.pageX;
var y = e.pageY;
};
и вернуть из него значения, но это не представляется возможным (объяснено выше).
Мы также могли бы создать расширение Chrome и поместить скрипт в background.js
, но я не смог найти способ извлечь значение из расширения и использовать его в коде. Возможно ли это?
Я также пытался отслеживать движение мыши в коде C#, но это не похоже на надежность:
Мы обычно нужно прокрутить страницу. Это можно сделать с помощью: js.ExecuteScript("window.scrollBy(0," + scrollDownAmountInPixels + ")");
, где js - это IJavaScriptExecutor
. Но прокрутка также двигает мышь. Мы могли бы обновить значение mouse-y до значения прокрутки, но если мы находимся в верхней части страницы и прокручиваем вверх ИЛИ, если находимся внизу страницы и прокручиваем вниз - мышь получит неправильные координаты. Мы могли бы проверить такие вещи, как page height
, расстояние окна от верхней части страницы (scroll amount
) и расстояние от окна до нижней части страницы (page height - (scroll amount + window height size)
), НО JavaScript любит возвращать 0
вместо некоторых из этих значений в определенных c местах страницы. Я попытался прокрутить по пикселям, чтобы найти местоположение, в котором JavaScript не вернет 0
в нужных значениях, но это просто становится слишком ненадежным.
Я действительно надеюсь найти некоторую помощь здесь. Заранее спасибо!