0

我正在尝试使用 selenium 在我的 Ruby 脚本上使用 javascript 执行程序滚动到一个元素。但是,脚本会一直向下滚动页面并跳过该元素。因此不与元素交互。

滚动方式:

def scroll_into_view(element, locator=nil)
    element = element.nil? ? find(locator) : element
    @wd.execute_script('arguments[0].scrollIntoView(true);', element)
  end

参考:

scroll_into_view(nil, gear_icon_span_locator)

您知道在 ruby​​ 中滚动到元素的任何其他方法吗?

我已经尝试过动作构建器并实际上移动到一个元素,这似乎不起作用。

4

2 回答 2

0

在 Watir 中,您可以使用以下内容滚动到元素。

element.scroll.to :bottom
于 2019-03-28T17:29:44.283 回答
0

有效的脚本是这样的,我从这里找到了答案:适用于 ruby​​ 的滚动

  def scroll_to_element(element, locator=nil)
    script_string = "var viewPortHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);" +
        "var elementTop = arguments[0].getBoundingClientRect().top;" +
        "window.scrollBy(0, elementTop-(viewPortHeight/2));"
    element = element.nil? ? find(locator) : element
    execute_script(script_string, element)
  end
于 2019-03-28T19:19:17.717 回答