使用selenium webdriver java,我一直在尝试验证此页面上列出的每个产品:https://www.gumtree.com/cars/london包含完整的产品详细信息,如年份,引擎大小等。我尝试使用代码返回页面源:`
driver.getPageSource();
但输出过于冗长。我希望实现这一目标的一种方法是对页面上每个列出的产品断言或getText
每个产品信息,但这会在页面更新时引起问题。是否有一种聪明而有活力的方式来完成手头的任务?
答案 0 :(得分:0)
据我所知,除非刷新浏览器,否则该页面上列出的产品不会更新,因此对于在每个产品的内容上运行断言的想法应该没有问题。
您可以存储所有当前列出的结果的列表并进行迭代:
@Test
public void checkProductFields() throws Exception {
WebDriver driver = getDriver();
driver.get("https://www.gumtree.com/cars/london");
List<WebElement> productList = driver.findElements(By.xpath("//ul[@data-q='featuredresults' or @data-q='naturalresults']/li/article"));
for (WebElement product : productList) {
String year = product.findElement(By.xpath(".//span[@itemprop='releaseDate']")).getAttribute("innerHTML");
String mileage = product.findElement(By.xpath(".//span[@itemprop='vehicleMileage']")).getAttribute("innerHTML");
String fuelType = product.findElement(By.xpath(".//span[@itemprop='vehicleFuelType']")).getAttribute("innerHTML");
String engineSize = product.findElement(By.xpath(".//span[@itemprop='vehicleEngineSize']")).getAttribute("innerHTML");
//Assertions...
}
}