C# 为什么在尝试获取包含每个结果链接的搜索结果面板时出现此错误?

C# 为什么在尝试获取包含每个结果链接的搜索结果面板时出现此错误?,c#,selenium,selenium-webdriver,webdriver,selenium-chromedriver,C#,Selenium,Selenium Webdriver,Webdriver,Selenium Chromedriver,我在尝试使用Selenium和C编写这个简单的应用程序时遇到了很多错误# 我只想制作一个应用程序(在windows应用程序或控制台应用程序中),使用selenium打开浏览器,进入google页面,搜索“苹果”,并获得前5个结果 这是我正在使用的代码: IWebDriver driver = new ChromeDriver(); driver.Navigate().GoToUrl("http://google.com");

我在尝试使用Selenium和C编写这个简单的应用程序时遇到了很多错误#

我只想制作一个应用程序(在windows应用程序或控制台应用程序中),使用selenium打开浏览器,进入google页面,搜索“苹果”,并获得前5个结果

这是我正在使用的代码:

            IWebDriver driver = new ChromeDriver();
            driver.Navigate().GoToUrl("http://google.com");
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
            //IWebElement element = driver.FindElement(By.Id("gbqfq"));

            driver.FindElement(By.Name("q")).SendKeys("apples");


            //element.SendKeys("apples");

            // Get the search results panel that contains the link for each result.
            IWebElement resultsPanel = driver.FindElement(By.Id("search"));
            


            // Get all the links only contained within the search result panel.
            ReadOnlyCollection<IWebElement> searchResults = resultsPanel.FindElements(By.XPath(".//a"));

            // Print the text for every link in the search results.
            int resultCNT = 1;
            foreach (IWebElement result in searchResults)
            {
                if (resultCNT <= 5)
                {
                    Console.WriteLine(result.Text);
                }
                else
                {
                    break;
                }
                resultCNT++;
            }

这应该满足您的需要:

        IWebDriver driver = new ChromeDriver();
        driver.Navigate().GoToUrl("http://google.com");
        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);

        driver.FindElement(By.Name("q")).SendKeys("apples");
        
        // Click on the Search button
        driver.FindElement(By.Name("btnK")).Click();

        // Use a Css Selector to go down to the actual element, in this case <a>
        var results = driver.FindElements(By.CssSelector("#rso > div > div > div.r > a"));
        foreach (var item in results)
        {
            //Extract the page title and the url from the result
            var title = item.FindElement(By.TagName("h3")).Text;
            var url = item.GetProperty("href");
            Console.WriteLine($"{title} | {url}");
        }
IWebDriver=新的ChromeDriver();
driver.Navigate().gotour(“http://google.com");
driver.Manage().Timeouts().ImplicitWait=TimeSpan.FromSeconds(10);
驱动程序.FindElement(按名称(“q”)).SendKeys(“苹果”);
//点击搜索按钮
driver.FindElement(By.Name(“btnK”))。单击();
//在本例中,使用Css选择器向下转到实际元素
var results=driver.FindElements(通过.CssSelector(“#rso>div>div>div>div.r>a”);
foreach(结果中的var项目)
{
//从结果中提取页面标题和url
var title=item.FindElement(按.TagName(“h3”)).Text;
var url=item.GetProperty(“href”);
Console.WriteLine($“{title}{url}”);
}

简而言之,您出现此错误是因为您没有在页面中搜索正确的元素。

您救了我的命
        IWebDriver driver = new ChromeDriver();
        driver.Navigate().GoToUrl("http://google.com");
        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);

        driver.FindElement(By.Name("q")).SendKeys("apples");
        
        // Click on the Search button
        driver.FindElement(By.Name("btnK")).Click();

        // Use a Css Selector to go down to the actual element, in this case <a>
        var results = driver.FindElements(By.CssSelector("#rso > div > div > div.r > a"));
        foreach (var item in results)
        {
            //Extract the page title and the url from the result
            var title = item.FindElement(By.TagName("h3")).Text;
            var url = item.GetProperty("href");
            Console.WriteLine($"{title} | {url}");
        }