Что-то подобное я реализовал когда-то с помощью JS, то есть мы пишем js скриптец и выполняем его в коде автотестов. Для выполнения в коде можно заюзать такой метод:
/**
* @param javascript the Javascript to execute on the current page
* @return Returns an Object returned by the Javascript provided
*/
public void Object executeJS(String javascript) {
Object returnObj = null;
try {
JavascriptExecutor jsExecutor = (JavascriptExecutor) getDriver();
returnObj = jsExecutor.executeScript(javascript);
} catch(Exception e) {
logger.error("Javascript execution failed! Please investigate into the issue.");
logger.debug("Failed Javascript:" + javascript);
}
return returnObj;
}
выполнение этого метода будет таким, пример:
executeJS("тут_указываем_наш_js_стрингом");
Сам JS будет каким-то таким, пример, что юзал я, вам надо его немного подпилить под свои нужды… Указать первый элемент за который ухватиться…
<!DOCTYPE HTML>
<html>
<body>
<div class="col-lg-12">
<div id="login">
<h2 id="qqq">Some text about!!!!</h2>
</div>
</div>
<script>
function domRangehighlight(text) {
var root = document.getElementById('qqq').firstChild;
var content = root.nodeValue;
if (~content.indexOf(text)) {
if (document.createRange) {
var rng = document.createRange();
rng.setStart(root, content.indexOf(text));
rng.setEnd(root, content.indexOf(text) + text.length);
// Start: эту часть можно удалить, она подсвечивает текст на странице
var highlightDiv = document.createElement('span');
highlightDiv.style.backgroundColor = 'red';
rng.surroundContents(highlightDiv);
// END: эту часть можно удалить, она подсвечивает текст на странице
return rng.toString();
}
} else
alert('Совпадений не найдено');
}
var foo = domRangehighlight('about');
alert(foo);
</script>
</body>
</html>
Данный пример вернет вам текст, который обработает javascript. Там уже можно юзать разные подходы, к примеру передавать нужные текст в метод и скрипт, который надо найти и скопировать или хвататься по xpath за разные элементы и брать только то что находится в них… В общем там уже воображению нет предела…
Вот тут почитайте, как подобный js подпилить для себя и как это реализовуется - Выделение: Range, TextRange и Selection
Таким образом, вам вернется стринга, согласно ваших требований, которой можно манипулировать в тестах или делать какие-то проверки…