Прокрутите часть страницы до самого последнего раздела в div в селене - PullRequest
0 голосов
/ 31 октября 2019

У меня есть сценарий, в котором флажок будет включен только тогда, когда раздел прокрутки div полностью прокручен. Используя вышеупомянутые методы и все поиски, я смог прокрутить до последнего элемента div. Но проблема в том, что между последним элементом и секцией конца прокрутки div есть некоторый отступ / отступ, который не делает флажок включенным. Если я даю

  WebElement element = driver.findElement(By.xpath("xpath"));
((JavascriptExecutor) 
 driver).executeScript("arguments[0].scrollIntoView(true);", element);

, я могу сосредоточиться на секции прокрутки, но не могу прокрутить.

  Actions actions = new Actions(driver);
  actions.moveToElement(element);
  actions.perform();

Здесь я могу перейти к последнему элементудив. но не конец прокрутки div, поэтому флажок по-прежнему отключен.

  js.executeScript("window.scrollBy(0,100);") 

прокручивает все ожидаемое окно. Итак, есть ли способ явно прокрутить часть div?

Есть ли какие-либо изменения, которые можно сделать, чтобы включить флажок?

1 Ответ

0 голосов
/ 31 октября 2019

Во-первых, давайте отметим некоторые ключевые идеи

ключевое различие между scrollTo & scrollBy заключается в том, что

  • scrollTo прокручивается к определенной частивеб-сайт, как вы ожидаете.

  • scrollBy прокручивает до определенной части ОТ текущей позиции.

Вам нужно scrollTo не scrollBy, теперь давайте перейдем к концу вашего div

Второе важное замечание: заполнение считается частью элемента в отличие от поля, если вы получаете высоту элемента, заполнение находится на этой высоте

теперь получите ваш элемент как объект javascript и присвойте его переменной.

, поэтому присвойте это

driver.executeScript("const myElem = document.getElementById('ELEMENT_ID'); return myElem")

объекту WebElement, так как этот код вернет ваш элемент, если у него нет идентификатора, используйте любой другой метод JS для получения класса вашего элемента или чего-либо еще.

мы назвали его myElem, поэтому мы все еще можем связать его с JS с этим именем, выполнить это в драйвере

window.scrollTo(0, myElem.offsetTop + myElem.offsetHeight )

это прокрутит до «верхней координаты вашего элемента» + «высоты вашего элемента», котораячуть ниже.

если веб-сайт был достаточно умен, чтобы обнаружить, что эта прокрутка была роботизированной, вы можете использовать

window.scrollTo({
  top: myElem.offsetTop + myElem.offsetHeight,
  left: 0,
  behavior: 'smooth'
});

, если поле все еще остается, получить его таким же образом, а затем добавить его к верхнему смещению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...