26

私はセレンを使用しており、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();                
        }    
}

ありがとう

4

2 に答える 2

39

インデックス値で ElementAt(int) 関数を使用します。

ElementAt(int) 関数への MSDN リンクは次のとおりですhttps://msdn.microsoft.com/en-us/library/bb299233(v=vs.110).aspx

于 2015-09-17T19:55:02.720 に答える
15

私は読み取り専用のコレクションを使用していませんが、MSDNElementAtのドキュメントから、メソッドを使用して特定のインデックスで要素を取得できるようです。次のように動作するはずです。

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

int index = 1; // sample

var row = rows.ElementAt(index)

Linq によって提供される拡張メソッドusing System.Linq;であるため、クラスにステートメントを追加する必要がある場合があります。ElementAt()

于 2015-09-17T19:56:03.960 に答える