Java 从谷歌搜索页面获取所有搜索结果

Java 从谷歌搜索页面获取所有搜索结果,java,selenium,Java,Selenium,我想在键入一些字符串进行搜索后,从google获得搜索结果。我怎样才能用硒做到这一点?到目前为止,我成功地创建了以下内容: WebDriver driver = new ChromeDriver(); driver.get("http://www.google.com/xhtml"); Thread.sleep(5000); WebElement searchBox = driver.findElement(By.name("q"));

我想在键入一些字符串进行搜索后,从google获得搜索结果。我怎样才能用硒做到这一点?到目前为止,我成功地创建了以下内容:

WebDriver driver = new ChromeDriver();
        driver.get("http://www.google.com/xhtml");
        Thread.sleep(5000);
        WebElement searchBox = driver.findElement(By.name("q"));
        searchBox.sendKeys("ChromeDriver");
        searchBox.submit();

        System.out.println("Current Url: " + driver.getCurrentUrl());

        List<WebElement> results = driver.findElements(By.xpath("//h3[@class=r]/a"));

        for(int i=0; i<results.size(); i++){
            System.out.println(">>>>> results " + results.get(i).getText());
        }

        // second attempt

        List<WebElement> allSearchResults = driver.findElements(By.cssSelector("ol li h3>a"));

        //iterate the above list to get all the search titles & links from that page
        for (WebElement eachResult : allSearchResults)
        {
            System.out.println("Title : " + eachResult.getText() + ", Link : " + eachResult.getAttribute("href"));
        }
WebDriver=new ChromeDriver();
驱动程序。获取(“http://www.google.com/xhtml");
睡眠(5000);
WebElement searchBox=driver.findElement(By.name(“q”);
searchBox.sendKeys(“ChromeDriver”);
searchBox.submit();
System.out.println(“当前Url:+driver.getCurrentUrl());
List results=driver.findElements(By.xpath(“//h3[@class=r]/a”);

对于(inti=0;i,您的思路是正确的。您的xpath似乎不正确。您缺少r旁边的单引号

List<WebElement> results = driver.findElements(By.xpath("//h3[@class=r]/a"));
List results=driver.findElements(By.xpath(“//h3[@class=r]/a”);
应该是

 List<WebElement> results = driver.findElements(By.xpath("//h3[@class='r']/a"));
List results=driver.findElements(By.xpath(“//h3[@class='r']/a”);
提交搜索表单后,您需要:

WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds);
wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("h3.r a")));

谢谢,但我还是得到了空结果。知道为什么吗?@PeterPenzov在提交后和搜索链接之前。顺便问一下,你知道为什么第二个结果列表不起作用吗?我也想修复它。@PeterPenzov当然,
h3>a
不在页面上的
ol li
内-因此,没有任何内容与
ol li h3匹配>一个
选择器。顺便说一句,你可以使用浏览器开发者工具中的控制台和
$
$$
函数来试验CSS选择器。例如:
$('h3>a')
@PeterPenzov只需打开你的chrome开发者工具,控制台选项卡,然后玩CSS选择器。