Как я могу получить доступ к элементу IReadOnlyCollection через его индекс?
Я работаю с 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();
}
}
спасибо
2 ответов
используйте функцию ElementAt(int) со значением индекса.
вот ссылка MSDN на функцию ElementAt(int)https://msdn.microsoft.com/en-us/library/bb299233 (v=против 110).aspx
Я не использовал коллекции только для чтения, но из MSDN документация, похоже, что можно получить элемент по заданному индексу, используя ElementAt
метод. Это должно работать так:
IReadOnlyCollection<IWebElement> rows = Driver.FindElements(By.XPath("./*/tr"));
int index = 1; // sample
var row = rows.ElementAt(index)
возможно, вам придется добавить using System.Linq;
оператор в вашем классе, потому что ElementAt()
является методом расширения, предоставляемым Linq.