簡體   English   中英

System.ArgumentOutOfRangeException:索引超出范圍 C# 中的錯誤

[英]System.ArgumentOutOfRangeException: Index was out of range Error in C#

我正在用Selenium寫一個從inte.net下載文件的程序。但是在程序啟動幾秒鍾后,我遇到了這個錯誤。

        Thread.Sleep(500);
        var driver = new ChromeDriver();
        driver.Navigate().GoToUrl("https://oblivious212.artstation.com/");
        Thread.Sleep(1000);
        var Projects = driver.FindElements(By.ClassName("album-grid-item"));
        for(int i = 0; i < Projects.Count(); i++)
        {
            Projects = driver.FindElements(By.ClassName("album-grid-item"));
            Projects[i].Click();
            Thread.Sleep(1000);
            var Images = driver.FindElements(By.TagName("img"));

            for(int x = 0; x < Images.Count(); x++)
            {
                var ImageUrl = Images[x].GetAttribute("src");
                var ImageName = Images[x].GetAttribute("alt");
                WebClient Downloader = new WebClient();
                Downloader.DownloadFile(ImageUrl, "C:\\Users\\DeLL\\Pictures\\Images\\" + ImageName + ".jpg");
            }
            Thread.Sleep(250);
            driver.Navigate().Back();

故障點。

變量 Projects 已在 for 循環外設置。 您不必在循環中一次又一次地獲取它。 此外,您正在迭代它的計數並修改您迭代的 object 會在“foreach”循環內給出異常,在 for 循環中它也是不好的做法。

您無論如何都可以檢查索引在某種情況下是否有效。

if (Projects.ElementAt(i) == null) {
 continue; //index i is wrong - continue will propagate to next element in your for loop
}

請注意,ElementAt 方法需要將命名空間 System.Linq 添加到您的代碼中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM