对于教学项目,我正在尝试计算下一页的课程元素数量: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)有限循环中的所有元素? 加载后,它们很容易计算。
答案 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"