Какой должен быть CSS путь для поиска контента content_foo?
Если попытаться взять контент от родительского span[class="class_foo"], то его контентом будет: 'content_barcontent_foo'
Как по мне, это не просто даже на JavaScript реализовать:
// Run me inside Chrome Dev console
// Prepare
var html = '<span class="class_foo"> \
<span class="class_bar">content_bar</span> \
<br> \
content_foo \
</span>';
var el = document.createElement("div");
el.innerHTML = html;
// Find node
var node = el.querySelector(".class_foo");
// Get last item
console.log( node.childNodes[node2.childNodes.length - 1] );
Про CSS молчу… Вот если бы content_foo был в тег <p> обвернут…
По идее этот xpath вернет весь текст, чего и не хочется.
Скажу как я это делаю. В моей практике такие случаи встречались достаточно редко, я использую метод самописный утилитный метод типа getElementTextWihoutChildren, Где беру весь текст, а потом прохожусь по чилдам(первого порядка разумеется) и просто реплейсом удаляю их текст.
Драйвер должен плюнуть exception на такое, ибо text() не является нодом, по которым собственно и осуществляется поиск via findElement(-s). text() будет работать, если его использовать в качестве функции поиска по тексту, а не возврата значения содержимого ноды.
Как уже написали выше, подобные задачи решаются путем взятия innerHtml у искомого элемента аля element.getAttribute("innerHTML"). Затем конечно же придется распарсить полученное значение, удалив все лишнее.