Разбить текст внутри диапазона, если между ними есть тег img - selenium - java - PullRequest
0 голосов
/ 05 мая 2018

У меня есть сценарий, где внутри тега span у меня есть две строки, разделенные тегом img.

<span>
    text
    <img/>
    text
</span>

Когда я пытаюсь найти этот диапазон, используя селен и Xpath, я нашел его - но getText() метод элемента span, возвращающий "texttext". Мое намерение состоит в том, чтобы получить "text text".

driver.findElement(By.xpath("MY_XPATH_TO_FIND_THAT_SPAN").getText();

Мой Xpath в порядке (потому что я получаю правильный веб-элемент, но как мне получить строку, как я отмечу здесь? Я хочу добавить пробел, когда есть тег img.

Буду рад вашей помощи,

Спасибо!

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Для извлечения текста text из первого дочернего узла и текста text из третьего дочернего узла вы можете использовать метод getAttribute("innerHTML"), а затем использовать split() и, наконец, выведите текстовый текст , вставив между ними пробел, как показано ниже:

String my_string = driver.findElement(By.xpath("MY_XPATH_TO_FIND_THAT_SPAN")).getAttribute("innerHTML");
String[] stringParts = my_string.split("\n");
String partA = stringParts[0];
String partB = stringParts[2];
System.out.println(partA + " " + partB);
0 голосов
/ 05 мая 2018

Нет прямого способа сделать это, используя .getText(). Вы можете использовать .getAttribute("innerHTML"), и тогда вам нужно будет заменить все, что находится между двумя «текстовыми» строками (IMG и т. Д.), Пробелом.

Вот простой пример, основанный на вашем HTML, который, вероятно, будет работать.

String s = driver.findElement(By.xpath("MY_XPATH_TO_FIND_THAT_SPAN").getAttribute("innerHTML"); // <span>text<img/>text</span>
s = s.replaceAll("<img.*?/>", " ");
System.out.println(s);

Это печатает

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