Как использовать ИЛИ Условие в методе селена findElements () для любого селектора? - PullRequest
7 голосов
/ 19 марта 2011

Я хочу получить всю информацию WebElement с именем класса "act" или "dact"

Я использую строку кода ниже, чтобы получить всю информацию о классе для "act". Может ли кто-нибудь помочь мне использовать условие ИЛИ в имени класса?

List<WebElement> nL2 = driver.findElements(By.className("act"));

Что-то похожее на это; так что мне не нужно писать две отдельные строки для каждого класса.

//this is not working

List<WebElement> nL2 = driver.findElements(By.className("act | dact"));

Спасибо!

Ответы [ 2 ]

8 голосов
/ 20 марта 2011

Можете ли вы просто объединить два списка?

List<WebElement> act = driver.findElements(By.className("act"));
List<WebElement> dact = driver.findElements(By.className("dact"));
List<WebElement> all = new ArrayList<WebElement>();
all.addAll(act);
all.addAll(dact);

В качестве альтернативы, вы можете использовать локатор xpath, предложенный @ Alejandro

List<WebElement> all = driver.findElements(By.xpath("//*[@class='act' or @class='dact']"));
5 голосов
/ 02 марта 2017

Я знаю, что этот вопрос действительно старый, но, вероятно, самый простой способ сделать это - использовать селектор CSS, такой как

driver.findElements(By.cssSelector(".act, .dact"));

Вы должны предпочесть CSS-селекторы XPath, потому что поддержка браузеров лучше и они более производительны (и я думаю, что их легче изучать / понимать). Селекторы CSS могут делать все, что может By.className(), а также многое другое. Они очень мощные и очень полезные.

Некоторые ссылки на селекторы CSS для начала работы.

Справочник по CSS для W3C

Советы по выбору CSS для соуса Labes

...