Watir 等待更多帖子加载

Watir wait for more posts load

我要抓取的网站正在使用滚动事件进行延迟加载。 (无限滚动) 我想等待更多帖子加载,但所有帖子都具有相同的 class 名称。所以,我等不及加载具有特定 class 名称的元素。我不想使用 sleep() 方法。

示例代码:

<div class='posts'>
 <div class='single-post'></div>
 <div class='single-post'></div>
 <div class='single-post'></div>
 <div class='single-post'></div>
 // The following posts appear after scrolling. I want to fetch these posts
 <div class='single-post'></div>
 <div class='single-post'></div>
 <div class='single-post'></div>
 <div class='single-post'></div>
</div>

我该如何解决这个问题?是否可以检查此 div 是否有超过 10 个帖子?

想法?

您可以获取 single-post div 的集合以查看是否加载了更多。根据页面的标记,您可以执行以下操作:

browser.divs(class: 'single-post').count

或者,如果 parent 很重要:

browser.div(class: 'posts').divs(class: 'single-post').count

这个可以用来等待帖子数量增加:

# Find the original count
original_count = browser.divs(class: 'single-post').count

# Take an whatever action to trigger the loading of more posts
browser.scroll.to :bottom

# Wait for the count to increase
browser.wait_until do
  new_count = browser.divs(class: 'single-post').count
  new_count > original_count
end