webdriver可以动态验证网页上的多个信息吗?

时间:2016-12-02 15:06:40

标签: java eclipse selenium-webdriver

使用selenium webdriver java,我一直在尝试验证此页面上列出的每个产品:https://www.gumtree.com/cars/london包含完整的产品详细信息,如年份,引擎大小等。我尝试使用代码返回页面源:`

driver.getPageSource();

但输出过于冗长。我希望实现这一目标的一种方法是对页面上每个列出的产品断言或getText每个产品信息,但这会在页面更新时引起问题。是否有一种聪明而有活力的方式来完成手头的任务?

1 个答案:

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