Помогите пожалуйста взять текст XPATH в двух элементах разных

Поддержка
  • задача1.
    есть элемент:
    <div class="555">
    $50
    <div class="qwerty123">
    <span class="777">
    "-"
    "0.16%"
    </span>
    </div>
    </div>

    Я никак не могу взять только текст "$50", без текста который находится еще в внутри спана.

    XPATH>//div[contains(@class,'555')] - получается переменная с именем - "$50-0.16%"
    XPATH>//div[contains(@class,'555r')]/text() (работает в браузере, находит 1 элемент тот что нужно, но в БАСе если нажимаю получить текст через этот путь, переменная получается без имени)

    Как вариант я хотел обрезать ПОЛНУЮ строку (убрать все что ДО знака"-"), но усложняет задачу то, что в другом месте сайта может быть знак "+" на этом месте
    Получается если обрезать строку по знаку, то нужно указывать что будет например "-" ИЛИ "+" (все что ДО этого знака или другого, обрежь)

    грубо говоря - Обреж строку "$50(-)0.16%" до знака "-", учитывая, что там может быть "+"

    Я не смог пока решить задачу (не важно брать всю строку и потом резать нужную часть, либо через XPATH достать сразу только нужный текст.

    задача2 (суть похожа, но чуть изменились условия).

    <div class="111">
    Брат по которому ищем
    </div>
    <div class="555">
    <span class="777">
    $33
    </span>
    "0.16"
    "%"
    </div>

    Тут мне отдельно нужно достать ВСЕ значения (и "$33" и "0.16" и "%")
    Спан(внутри с текстом "$33"), текст - "0.16" и текст- "%" находятся на одном уровне

    Если я обращаюсь через XPATH к "div" и прошу найти его текст, получается = "$330.16%", а мне нужны они по раздельности.

    XPATH> //div[contains(@class,'111')][text()='Брат по которому ищем']//following-sibling::div

    Если я обращаюсь только к спану, то работает, достает "$33", но остальной текст отдельно не получается достать

    XPATH> //div[contains(@class,'111')][text()='Брат по которому ищем']//following-sibling::div/span

    Кроме как достать из разметки правильно текст каждый отдельно, есть вариант взять ВСЮ строку что выше, Удалить в ней ту часть что ниже (в спане), останется как раз нужный кусок. Т.е. из строки УДАЛИТЬ подстроку.
    Но у меня в БАСе тоже не получается это сделать, уровня не хватает пока.

    Помогите пожалуйста решить 2 задачки эти и достать наконец нужный текст.
    Огромное спасибо!!

    1. //div[contains(@class,'555')]/text()[1]
    2. Аналогично, только /text() с другим индексом. Или вы хотите сразу массив строк получить?
  • @Vituskosoy
    Спасибо. Действительно это работает если написать в браузере. Но по неизвестной мне причине БАС не сохраняет текст, когда я в XPATH пишу - "/text()"
    Возможно что-то делаю неправильно.
    Но повторюсь, если полный адрес вставить в браузере - "ПУТЬ К ЭЛЕМЕНТУ/text()", тогда выделяется текст который мне нужен, все прекрасно. Но нажимаю - СОХРАНИТЬ ТЕКСТ, в БАС, вставляю этот адрес, он дает пустые кавычки.
    Видимо это нужно делать как-то с другим действием (не текст сохранить?)

  • @Xandiyam Можешь дать ссылку на страницу?