我正在尝试解决一个问题,我需要检查网页中的所有产品是否完全加载。 仅当用户向下滚动页面时才会加载产品。每次滚动时都会加载8个产品。
如何检查该页面上最后一个产品加载而用户现在无法向下滚动?
答案 0 :(得分:0)
我遇到了与你类似的问题。在我的情况下,我收到一条消息,说明正在加载更多项目。一旦我加载了所有项目,我就不再收到此消息。所以我解决它的方法是创建一个滚动到页面底部的循环,检查是否正在加载更多的东西,并在加载完所有内容后突破循环。
现在,如果您没有指示更多项目正在加载的元素,您可以使用findElements()
获取所有产品并检查此列表的大小。加载所有产品后,列表将保持相同的长度。
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");
}
答案 1 :(得分:0)
使用已知的solution for scrolling down:
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,250)", "");
然后检查last
滚动迭代后的8个产品与current
迭代没有区别。
伪代码:
products = getProducts();
jse.executeScript("window.scrollBy(0,250)", "");
// reasonable wait here
if(getProducts() == products){
//that it. nothing to scroll