Как извлечь текст из текстовых узлов в том же родительском узле через XPath - PullRequest
0 голосов
/ 22 мая 2018

Я выполняю некоторые тесты пользовательского интерфейса, используя Selenium в Java, чтобы забрать фрагменты текста из пользовательского интерфейса и использовать его для тестирования автоматизации.

У меня есть следующие элементы в моем пользовательском интерфейсе:

<span id="MainContent" class="control-label">
    "Text 1"
    <br>
    "Text 2"
    <br>
    "Text 3"
</span>

Мне нужно выделить каждый из трех отдельных фрагментов текста по отдельности и утверждать против каждого отдельно.

У меня проблема с моим локатором, так как при запуске теста селен говорит, что я не могу найти элемент.

Для первого текстового элемента («Текст 1») я использовал следующий код локатора, который не работает.Я пробовал некоторые другие варианты этого, но всегда удавалось найти ошибку локатора.Помогите!

By category = By.xpath("//span[@id='MainContent'][1]");

Ответы [ 2 ]

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

Технически нет 3 элементов, есть технически один.Что вы можете сделать, это получить текст и разделить его на основе разделителей.

By category = By.xpath("//span[@id='MainContent']") ;

String allText = driver.findElement(category).getText();

String[] allTextArray = allText.split("<br>");

String text1 = allTextArray[0];
String text2 = allTextArray[1];
String text3 = allTextArray[2];
0 голосов
/ 22 мая 2018

В соответствии с HTML, который вы предоставили для извлечения текстов, например Текст 1 , Текст 2 и Текст 3 , вы можете использовать следующее решение:

WebElement myElement = driver.findElement(By.xpath("//span[@class='control-label' and @id='MainContent']"));
// to extract the text "Text 1"
String myText1 = ((JavascriptExecutor)driver).executeScript('return arguments[0].firstChild.textContent;', myElement).toString();
// to extract the text "Text 2"
String myText2 = ((JavascriptExecutor)driver).executeScript('return arguments[0].childNodes[3].textContent;', myElement).toString();
// to extract the text "Text 3"
String myText3 = ((JavascriptExecutor)driver).executeScript('return arguments[0].lastChild.textContent;', myElement).toString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...