我正在尝试使用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中的元素吗?
我已经尝试了动作构建器,并实际上移到了一个似乎不起作用的元素。
答案 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