Элемент прокрутки в selenium VBA

#excel #vba #selenium

#excel #vba #селен

Вопрос:

Я пытаюсь сосредоточиться на элементе, чтобы сделать этот элемент в центре экрана или сверху, чтобы быть выше середины. Это то, что я сделал

 .FindElementById("toBePaid[" amp; r - 1 amp; "]").ExecuteScript "this.scrollIntoView(true); window.scrollBy(0, -(window.innerHeight - this.clientHeight)-150);"
 

Но я не мог видеть элемент, поскольку он находится в верхней части экрана веб-сайта.

Я тоже пробовал

 .FindElementById("toBePaid[" amp; r - 1 amp; "]").ScrollIntoView True
 

Но та же проблема все еще существует.

Ответ №1:

С помощью @QHarr я мог бы его разделить

 Function ScrollIntoViewCenter(element As WebElement)
  Const JS_SCROLL_CENTER = _
    "this.scrollIntoView(true);" amp; _
    "var y = (window.innerHeight - this.offsetHeight) / 2;" amp; _
    "if (y < 1) return;" amp; _
    "for (var e=this; e; e=e.parentElement) {" amp; _
    "  if (e.scrollTop == 0) continue;" amp; _
    "  var yy = Math.min(e.scrollTop, y);" amp; _
    "  e.scrollTop -= yy;" amp; _
    "  if ((y -= yy) < 1) return;" amp; _
    "}" amp; _
    "window.scrollBy(0, -y);"
  
  element.ExecuteScript JS_SCROLL_CENTER
End Function