如何通过索引访问 IReadOnlyCollection 的元素?

How can I access a element of a IReadOnlyCollection through it index?

我正在使用 selenium,我正在使用 FindElements 函数,所以我得到了一个实现 IReadOnlyCollection 接口的元素。我想遍历列表,但 IReadOnlyCollection 似乎没有任何方法,如 Get(int index) 或操作 [].

的实现

我想避免将结果转换为列表或数组,因为我只想访问元素以读取它们。

目前我不想使用 foreach,因为我需要管理索引以便我可以将这些元素添加到另一个数组。

这就是我想要做的:

public void fillMatrix(){
    IReadOnlyCollection<IWebElement> rows = Driver.FindElements(By.XPath("./*/tr"));            
        IReadOnlyCollection<IWebElement> elements;
        matrix = new IControl[rows.Count()][];
        for(int i = 0; i < matrix.Count(); ++i){
            matrix[i] = rows[i].FinElements("./td").toArray();                
        }    
}

谢谢

对索引值使用 ElementAt(int) 函数。

这是 ElementAt(int) 函数的 MSDN link https://msdn.microsoft.com/en-us/library/bb299233(v=vs.110).aspx

我没有使用只读集合,但从 MSDN 文档来看,似乎可以使用 ElementAt 方法获取给定索引处的元素。它应该像这样工作:

IReadOnlyCollection<IWebElement> rows = Driver.FindElements(By.XPath("./*/tr"));   

int index = 1; // sample

var row = rows.ElementAt(index)

您可能需要在 class 中添加 using System.Linq; 语句,因为 ElementAt() 是 Linq 提供的扩展方法。