如何使用 Capybara / Poltergeist 和 Rails 从有限卷轴访问元素

How to access elements from finite scroll with Capybara / Poltergeist and Rails

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

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

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

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

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

好像不行。

有什么方法可以让 Poltergeist 到达页面底部,以便 javascript 加载(in)有限循环中的所有元素? 一旦加载,它们很容易计数。

execute_script 被调用以在 "browser" 中执行 javascript -- 我不确定您要设置值的 'page' 对象是什么,但您可能想要更像

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"