我刚刚开始使用硒,所以我想知道如何处理下面的事情...... 当在谷歌上输入一些东西它给我们建议我想在控制台上打印它们。 我试过这个
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());
}
但是不要在控制台上打印任何东西。请指导我出错的地方。
答案 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());
}