如何使用Capybara / Poltergeist和Rails访问有限滚动中的元素

时间:2015-11-02 18:58:11

标签: ruby-on-rails phantomjs capybara poltergeist

对于教学项目,我正在尝试计算下一页的课程元素数量:https://www.edx.org/course/subject/computer-science

我使用Poltergeist作为访问该页面的Web驱动程序,但由于该页面在用户向下滚动时使用javascript函数在页面加载后添加更多条目,因此我需要使用Poltergeist复制它。

我尝试使用以下方式向下滚动:

evaluate_script(“page.scrollPosition = {top:page.scrollPosition + 1000,left:0};”)

execute_script(“page.scrollPosition = {top:page.scrollPosition + 1000,left:0};”)

它似乎不起作用。

有没有办法让Poltergeist到达页面底部,以便javascript加载(in)有限循环中的所有元素? 加载后,它们很容易计算。

1 个答案:

答案 0 :(得分:2)

执行execute_script以在"浏览器中执行javascript" - 我不确定'页面'您尝试设置值的对象是,但您可能想要更像

的内容
execute_script('window.scroll(0,1000);')

作为一个更完整的例子

@session.visit 'https://www.edx.org/course/subject/computer-science'
count = @session.all(:css, '.discovery-card', minimum: 1).length()
puts "there are #{count} discovery cards"
@session.execute_script('window.scroll(0,1000);')
new_count = @session.all(:css, '.discovery-card', minimum: count+1, wait: 30).length()
puts "there are now #{new_count} discovery cards"