如何打印所有sugession来自汽车糖?

时间:2017-05-03 10:41:25

标签: selenium

我刚刚开始使用硒,所以我想知道如何处理下面的事情...... 当在谷歌上输入一些东西它给我们建议我想在控制台上打印它们。 我试过这个

driver.findElement(By.id("lst-ib")).sendKeys("cognizant i");

            List<WebElement> lst=driver.findElements(By.tagName("li"));
            int ii = lst.size();

        System.out.println(lst.get(3).getText());
        System.out.println(lst);
        for(int i=0;i<lst.size();i++){ 

            System.out.println("hi" + lst.get(i).getText());
        }

但是不要在控制台上打印任何东西。请指导我出错的地方。

2 个答案:

答案 0 :(得分:0)

以下代码等待您在google搜索栏中输入某个值后显示的建议,然后在控制台中逐个打印:

     driver.findElement(By.name("q")).sendKeys("Cognizant i");

    List <WebElement> allItems = driver.findElements(By.xpath("//*[@id='sbtc']/div[2]/div[2]/div[1]/div/ul//li/div[contains(@id,'sbse')]"));
    while(allItems.size() <1)
    {}

    System.out.println("Total no of elements :" + allItems.size() );

    for(int i=0; i< allItems.size() ;i++){
        value1= allItems.get(i).getText();
        System.out.println(value1);

    }

答案 1 :(得分:0)

您的代码实际运行,并输出建议 - 但是您正在抓取页面上的所有“li”元素,这会导致列表中存在大量空的或不相关的元素。

如果您在浏览器的google主页上打开控制台并搜索li标签,那么您可以看到这一点,这正是您的代码正在做的事情。

使您的代码更具体于您要收集的列表项 - 它们位于具有“listbox”角色的标记内。

以下内容将向控制台输出建议:

driver.findElement(By.id("lst-ib")).sendKeys("cognizant i");

WebElement suggestionList = driver.findElement(By.cssSelector("[role ='listbox']"));
List<WebElement> suggestions = suggestionList.findElements(By.tagName("li"));

for(WebElement suggestion : suggestions){
    System.out.println(suggestion.getText());
}