如何滚动到Ruby和Selenium中的元素

时间:2019-03-28 17:17:25

标签: ruby selenium

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

滚动方法:

with open(fullCSV, 'r') as finput:
    for item in csv.reader(finput):
        if not os.path.exists(tempLoc + item[0]):
            os.mkdir(tempLoc + item[0])
        with open(tempLoc + item[0] + r"\prm.263", "w+") as foutput:
            csv.writer(foutput, lineterminator='').writerow(item[1:])

参考:

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

您知道其他任何方式可以滚动到ruby中的元素吗?

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

2 个答案:

答案 0 :(得分:0)

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

element.scroll.to :bottom

答案 1 :(得分:0)

起作用的脚本是这样,我从这里找到了答案:Scroll that works for 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