Selenium (2.31.0、JavaSE 1.6 および IE9 を使用) を使用して、ページ上の一連の要素を見つけようとしています。これらの要素はすべて、「dataLabel」または「dataLabelWide」という 2 つのクラス名のいずれかを持ちます。現在、私のコードはこれらの要素を 2 つの個別の ArrayLists (クラス名ごとに 1 つずつ) に収集し、それらを配列に変換して 1 つの配列に結合します。ただし、この方法では要素が順不同でリストされるため、ページの HTML ソースで見つかった順序と同じ順序にする必要があります。
私のコードの上記のセクションは次のようになります(説明のためにコメントが追加されています):
// Application runs on WebDriver d, an InternetExplorerDriver.
// After navigating to the page in question...
List<WebElement> labels = d.findElements(By.className("dataLabel"));
List<WebElement> wLabels = d.findElements(By.className("dataLabelWide"));
// Locates the elements of either type by their respective class name.
WebElement[] labelsArray = labels.toArray(new WebElement[labels.size()]);
WebElement[] wLabelsArray = wLabels.toArray(new WebElement[wLabels.size()]);
// Converts each ArrayList to an array.
List<WebElement> allLabels = new ArrayList<WebElement>();
// Creates an ArrayList to hold all elements from both arrays.
for(int a = 0; a < labelsArray.length; a++) {
allLabels.add(labelsArray[a]);
}
for(int b = 0; b < wLabelsArray.length; b++) {
allLabels.add(wLabelsArray[b]);
}
// Adds elements of both arrays to unified ArrayList, one by one.
WebElement[] allLabelsArray = allLabels.toArray(new WebElement[allLabels.size()]);
// Finally converts unified ArrayList into array usable for test purposes.
// Far too complicated (obviously), and elements end up out-of-order in array.
最も効率的な解決策は、いずれかのクラス名を持つ要素を見つけて、それらがすぐに単一のリスト/配列に含まれるようにすることだと思います。私は自分でいくつかの検索を行いましたが、このタスクをどのように処理できるかについて決定的なアイデアは見つかりませんでした. これを行う方法があれば、それについて教えてください。