C# System.ArgumentOutOfRangeException:索引超出范围。必须为非负数且小于集合的大小。(参数“索引”)
在测试脚本中执行selenium C代码时出现以下错误 System.ArgumentOutOfRangeException:索引超出范围。必须为非负数且小于集合的大小。参数“索引” 在System.Collections.Generic.List`1.get_ItemInt32索引处 这是什么意思?我的代码中有什么问题C# System.ArgumentOutOfRangeException:索引超出范围。必须为非负数且小于集合的大小。(参数“索引”),c#,selenium,indexing,C#,Selenium,Indexing,在测试脚本中执行selenium C代码时出现以下错误 System.ArgumentOutOfRangeException:索引超出范围。必须为非负数且小于集合的大小。参数“索引” 在System.Collections.Generic.List`1.get_ItemInt32索引处 这是什么意思?我的代码中有什么问题 // Access the project IList<IWebElement> allRows = driver.FindElements
// Access the project
IList<IWebElement> allRows = driver.FindElements(By.XPath("//*[@id='GridViewProjList_ctl00']/tbody/tr"));
IList<IWebElement> allPages = driver.FindElements(By.XPath("//div[@class='rgWrap rgNumPart']//a"));
string projectName = "TITAN";
for (int i = 0; i <= (allPages.Count); i++)
{
allRows = driver.FindElements(By.XPath("//*[@id='GridViewProjList_ctl00']/tbody/tr"));
for (int row = 1; row <= (allRows.Count); row++)
{
projectName = "TITAN";
IWebElement nameElement = driver.FindElement(By.XPath("//table/tbody/tr/td[2]/div/div/div/table/tbody/tr[3]/td/div/div/div/div[2]/table/tbody/tr[" + row + "]/td[1]"));
string name = nameElement.Text;
if (projectName.Contains(name))
{
nameElement = driver.FindElement(By.XPath("//table/tbody/tr/td[2]/div/div/div/table/tbody/tr[3]/td/div/div/div/div[2]/table/tbody/tr[" + row + "]/td[1]"));
nameElement.Click();
break;
}
allPages = driver.FindElements(By.XPath("//div[@class='rgWrap rgNumPart']//a"));
}
allPages = driver.FindElements(By.XPath("//div[@class='rgWrap rgNumPart']//a"));
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(5);
allPages.ToList()[i].Click();
Thread.Sleep(3000);
}
Thread.Sleep(3000);
Console.WriteLine($"{projectName} project has been successfully accessed");
Thread.Sleep(3000);
问题是,您的列表大小不能保证在迭代期间相同: 迭代器基于allPages:
for (int i = 0; i <= (allPages.Count); i++)
这里再次使用原始索引器:
allPages.ToList()[i].Click();
如果新列表项计数小于i-1,则会遇到此错误
解决方案是在访问第i个元素时不要覆盖列表或检查长度。返回元素不是类型IWebElement或为空。请再次阅读错误消息:[Index]必须为非负数且小于集合的大小。您的最终迭代不小于集合的大小。长度检查中也有错误,因为集合是基于零的,对于int i=0,它应该是基于零的;我<所有页面数;i++@Guruston:接得好,我试过了。同样的错误也存在coming@DilshanKay:您到底尝试了什么?如果我不使用allPages=driver.FindElementsBy.XPath//div[@class='rgWrap rgNumPart']//a;OpenQA.Selenium.StaleElementReferenceException多次出现以下错误:stale元素引用:元素未附加到页面文档
allPages.ToList()[i].Click();