Селен - Найти детей, содержащих классы - PullRequest
0 голосов
/ 30 октября 2019

Я не могу найти регулярное выражение, чтобы заставить его работать.

Что мне нужно архивировать

В иерархии я хотел бы получить всех детей (включая несколько уровней), который содержит некоторые конкретные классы.

Например: я хотел бы, чтобы WebElements с классами "черный" или "белый"

<div class="initial-div">
  <div class="red">
     <div class="white">Hello</div>
  </div>
  <div class="black">Goodbye</div>
</div>

Он должен быть в состоянии найти обаДивы "Hello" и "Goodbye", так как они оба дети.

Мой подход

Я пытаюсь сделать это с помощью Selenium и поиска по xPath. Мое выражение выглядит так:

List<WebElement> nodes = initialNode.findElements(By.xpath("//*[@class='black' or @class='white']"));

Но я все время получаю "Исключения из-за недопустимых выражений" или результатов нет.

Может кто-нибудь помочь мне с этим?

Заранее спасибо!

РЕШЕНО!

Мне было сложнее, но я наконец-то это сделал. Я делюсь с вами информацией, если кто-то ищет это в любое время:

List<WebElement> nodes = initialNode.findElements(By.xpath("*//descendant::div[contains(@class, 'black') or contains(@class, 'white)]"));

Ответы [ 2 ]

0 голосов
/ 30 октября 2019
List<WebElement> nodes = initialNode.findElements(By.xpath("*//descendant::div[contains(@class, 'black') or contains(@class, 'white)]"));
0 голосов
/ 30 октября 2019

Если элемент имеет два xpath, вы можете написать два xpath, как показано ниже:

xpath1 | xpath2

Например:

//div[@class="black"] | //div[@class=“white"]

Он выберет любой* 1009 XPath *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...