[英]C# System.ArgumentOutOfRangeException:Index was out of range
[英]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.