I faced a similar issue as you. In my case I got a message saying more items were being loaded. Once I had loaded all items I no longer got this message. So the way I solved it was by creating a loop which scrolls to the bottom of the page, checks if more stuff is being loaded and breaks out of the loop once all is loaded.
Now if you don't have an element that indicated more items are loading you could use findElements()
to get all the products and check the size of this list. Once all products are loaded the list will remain the same length.
JavascriptExecutor executor = (JavascriptExecutor) driver;
List<WebElement> products = driver.findElements(By.something, "locator");
int amount = 0;
while products.size() > amount {
amount = products.size()
// Scroll to the bottom of the page
executor.executeScript("window.scrollTo(0, document.body.scrollHeight);");
products = driver.findElements(By.something, "locator");
}