如何使用硒获取搜索结果总数

How to get the total search result counts using selenium

我想在亚马逊搜索时获得结果计数。以下是场景

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

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+。

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

用于获取搜索结果总数的 Webelment 不正确。正确的 element/tag 是 "h2" with id "s-result-count"

下一行应该给你搜索结果数:

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

试试这个:

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

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

因此,您可以按照@Surya 的建议从这段代码中获取结果总数:

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