如何使用selenium获得总搜索结果计数

时间:2015-01-08 09:43:16

标签: selenium selenium-webdriver

我想在亚马逊搜索时得到结果计数。以下是方案

打开一个新的浏览器实例 导航到amazon.in 在文本框中键入搜索查询 单击搜索按钮 验证显示搜索结果数量的Web元素与我们的预期值

public void searchTestOne(){

    WebDriver driver = new FirefoxDriver();
    driver.get("http://www.amazon.in");
    driver.manage().window().maximize();        

    driver.findElement(By.id("twotabsearchtextbox")).sendKeys("Books");
    driver.findElement(By.className("nav-submit-input")).click();

    int result = driver.findElements(By.xpath(".//*[@id='atfResults']/ul[@id='s-results-list-atf']/li")).size();
    System.out.println(result);   

    driver.close();

    driver.quit();  

    }

从上面的代码中,它只显示第一页结果的计数,如“16”,其中有这么多页面,总结果是2,000+。

任何人都可以就此提出建议。

3 个答案:

答案 0 :(得分:3)

用于获取总搜索结果计数的Webelment不正确。正确的元素/标签是“h2”,id为“s-result-count”

下面的行应该给你搜索结果数量:

String result = driver.findElement(By.id("s-result-count")).getText().split(" ")[2];

答案 1 :(得分:3)

您似乎试图通过计算入伍书籍的数量来获取图书数量。这样,您必须导航到每个页面,并相应地增加您的计数。相反,您可以获得结果总数,或者,如果您查看页面的左上角,如下图所示:

enter image description here

因此,您可以通过@Surya建议获得此代码的结果总数:

String result = driver.findElement(By.id("s-result-count")).getText().split(" ")[2];
System.out.println(result);

答案 2 :(得分:1)

试试这个:

result = driver.findElements(By.xpath(".//*[@id='atfResults']/ul[@id='s-results-list-atf']/li")).count();