Selenium Web Driver - 如何检查页面中的所有产品是否加载

时间:2016-06-15 11:34:44

标签: java selenium

我正在尝试解决一个问题,我需要检查网页中的所有产品是否完全加载。 仅当用户向下滚动页面时才会加载产品。每次滚动时都会加载8个产品。

如何检查该页面上最后一个产品加载而用户现在无法向下滚动?

2 个答案:

答案 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