2

私は2つ、ElementsCollectionsつまりoddTableRowItemsevenTableRowItems

private static ElementsCollection oddTableRowItems() {
    return $$(By.className("odd"));
}

private static ElementsCollection evenTableRowItems() {
    return $$(By.className("even"));
}

forループを1回だけ実行するために、2つを組み合わせたいと思います。それは行項目であり、スタイリングの目的でクラス名が異なるだけで、クラス名でしか識別できません。

これは私がそれを結合しようとした方法ですが、うまくいきません:

ElementsCollection rowElements = evenTableRowItems();
rowElements.addAll(oddTableRowItems());

私は得る:

java.lang.UnsupportedOperationException

どうすれば2を組み合わせることができElementsCollectionsますか?

4

4 に答える 4

2

ここでは、API がもう少し使いやすくなっている可能性があります。しかし、この方法で 2 つの ElementsCollection インスタンスを組み合わせることができます。ここで重要なのはWebElementsCollectionWrapperクラスです。

ElementsCollection evenElements = $$(By.className("even"));
ElementsCollection oddElements = $$(By.className("odd"));
List<SelenideElement> elementsCombined = new ArrayList<>(evenElement);
elementsCombined.addAll(oddElements);
WebElementsCollectionWrapper wrapper = new WebElementsCollectionWrapper(elementsCombined);
ElementsCollection selenideCollectionCombined = new ElementsCollection(wrapper);
于 2015-12-21T18:39:37.287 に答える