Selenium Web Driver - 如何在向下滚动的同时获取运行时页面加载元素的所有项目?

时间:2015-11-16 14:33:09

标签: java selenium-webdriver

我厌倦了解决我需要从网页上获取产品的问题。仅当用户向下滚动页面时才会加载产品。每次滚动时都会加载12个元素。此页面上有一个类,称为无限滚动。

网页网址:http://www.marksandspencer.ie/Dresses/IE_SubCategory_1002041,en_IE,sc.html

我对下面的代码进行了编码,但没有得到输出。

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.testng.annotations.Test;

public class Scroll {

    @Test
    public void f() {
        FirefoxProfile p = new FirefoxProfile();
        p.setPreference("css.enabled", false);
        WebDriver driver = new FirefoxDriver(p);


        driver.manage().window().maximize();
        driver.get("http://www.marksandspencer.ie/Dresses/IE_SubCategory_1002041,en_IE,sc.html");
        WebElement itemCount = driver.findElement(By.className("innerTD2"));
        String a = itemCount.getText();
        int num = Integer.valueOf(a);
        System.out.println("item count ="+a);
        for(int i=0;i<num/12;i++)
        {
            JavascriptExecutor jse = (JavascriptExecutor)driver;
            jse.executeScript("window.scrollTo(0, document.body.scrollHeight)", "");
        }
    }
}

1 个答案:

答案 0 :(得分:0)

如果向下滚动,是否要测试是否会加载12个新元素?你的脚本有用吗?

从你的代码我看到你正在选择类“innerTD2”,它实际上是一个元素。如果我理解这一点,您需要访问此TD内的DIV元素并从那里获取文本。您应该可以通过以下方式获取该文本:

 String divXpath = "//*[@id='search']/div[1]/div[1]/table/tbody/tr/td/table/tbody/tr/td[2]/div";
 String resultshits = driver.findElement(By.xpath(divXpath)).getText();