我厌倦了解决我需要从网页上获取产品的问题。仅当用户向下滚动页面时才会加载产品。每次滚动时都会加载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)", "");
}
}
}
答案 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();