目前,我在使用延迟加载与页面中的元素进行交互时遇到了麻烦。我需要选择项目列表(主要是从页面顶部到页面底部,最多100个项目)。实施延迟加载后,我只能选择它的一部分,例如其中的1/3,因为它们将所有项目都分成3个不同的部分,那么它将仅加载第一部分。我发现使用tricky
Javascript可以像page.execute_script("window.scrollTo(0,100000)")
一样将其滚动到底部,然后我可能会得到所有项目。
,但应将其保存为最后一个选项。
所以,我的问题是 Capybara是否支持与“延迟加载”之类的交互。另外,在不使用Javascript的情况下我应该怎么做才能获得全部物品?
答案 0 :(得分:0)
如果您只是从某个站点抓取数据,则最简单的解决方案是仅使用execute_script
滚动页面。但是,如果您正在测试某个应用程序的行为正确,那么您希望远离execute_script
,因为它可以允许您执行用户从未做过的事情,这可能会使您的测试无效。而是使用hover
将鼠标指针移到页面上会触发加载下一部分的元素上。例如,如果您有显示的项目列表
<ul id="my_list_of_items">
<li class="item"></li>
<li class="item"></li>
...
<li class="item"></li>
</ul>
当列表底部滚动到视图中时,将下一组项目加载到页面中,然后执行类似的操作
find('.item:last-child').hover
这将导致页面上的最后一个item元素滚动到视图中,并将移动指针移到该元素上,然后触发更多项目的加载。