Selenium: получить динамические координаты элемента, используя C #

1

Используя IWebElement.Location, я могу получить координаты верхнего левого угла элемента относительно верхнего левого угла страницы.

Но это местоположение не говорит мне, где элемент находится в текущем окне браузера, то есть, вне зависимости от того, выключен ли он на экране или на экране, и если он отображается на экране, то есть ли он сверху или снизу или середине и т.д. Есть ли способ получить эту информацию на C#?

Благодарю!

Редактировать:
Для контекста проблема, которую я пытаюсь решить, выглядит примерно так:
1. Создайте экземпляр Selenium WebDriver и перейдите на страницу http://en.wikipedia.org/wiki/Selenium_(software).
2. Нажмите ссылку в таблице "Содержание", скажем, Selenium IDE.
Мне нужно проверить, что щелчок по ссылке приведет меня к разделу Selenium IDE на странице, то есть раздел Selenium IDE теперь отображается в верхней части окна браузера.

Теги:
selenium-webdriver

2 ответа

0

Возможно, это тот ответ, который вы ищете. Вероятно, вам придется полагаться на javascript. Здесь, где я получил идею: JQuery получить расположение элемента относительно окна

Или, подождите! Вы можете сделать это с чистым селеном. (Та же основная идея, что и в ссылке.)

  1. Получить позицию элемента, который вы знаете: IWebElement.Location
  2. Получите информацию о окне браузера a. Получите размер окна: IWebDriver.Manage(). Window.Size b. Если это не сработает, вам придется использовать (IJavaScriptExecutor) IWebDriver.ExecuteScript("arguments [0].scrollTop", IWebElement); или независимо от того, что эквивалентная команда javascript-исполнителя принадлежит команде консоли Firefox $(window).scrollTop()
  3. Сделайте некоторую математику: размер окна x - информация обозревателя x. размер окна y - информация обозревателя y
  4. Если он отрицательный, он выключается с экрана вверх. Если он положительный, но больше размера окна, то он с экрана низкий.
0

Отображается, что вам нужно.

driver.FindElement(By.Id("MyID")).Displayed

Или, в вашем случае:

IWebElement.Displayed;
  • 0
    IWebElement.Displayed возвращает true независимо от того, находится ли элемент на экране или вне экрана. Это не очень мне помогает. Я хочу знать местоположение элемента на текущем экране. Я хочу что-то похожее на IWebElement.Location но которое меняется при прокрутке страницы вверх или вниз.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню