XPath: выберите предшествующее значение <a>, если в div найден определенный класс - PullRequest
0 голосов
/ 25 ноября 2018

Я новичок в XPath, поэтому я прошу прощения, если это ужасно легко (однако не смог найти ничего в поиске, связанном с этим конкретным процессом).Я использую Xpath в листах Google, чтобы попытаться получить эту информацию.

Пример фрагмента кода для запуска:

<div class="product-grid-item card mb-4 shadow-sm">
  <a href="/collections/available/products/blue" class="card-link"></a>
  <div class="card-banner false">&nbsp;</div>
      <img src="//Blue_1_large.jpg?v=154" alt="Blue" class="card-img-top img-fluid">
  <div class="card-body pt-0">
      <div class="product-form-type mb-4 d-flex flex-direction-row flex-wrap">
        <img src="37/assets/tsf-form-icon.svg?3" alt="Flower">
            <p class="price">
<span class="range-price"><sup class="currency">$</sup>8<span class="d-none">.</span><sup>50</sup></span>
<small>/<span data-i18n="general.product.sellable_measures"></span></small></p>
    </div>
      <h4 class="card-title" data-i18n="general.product">
          Blue
      </h4>
      <p class="card-text">
          <small>8-11
              </small>
          <br>
          <small>8-11
              </small>
      </p>
  </div>
  <div class="card-footer bg-transparent">
    <hr>
  <span class="range-price"><sup class="currency">$</sup>42<span class="d-none">.</span><sup>50</sup></span>
  &nbsp;<span class="range-sep">–</span>&nbsp;
    <span class="range-price"><sup class="currency">$</sup>122<span class="d-none">.</span><sup>50</sup></span>
  <small>/<span data-i18n="general.product.sellable_measures"></span></small>
  </div>
</div>

Я пытаюсь выяснить, как получить значение href (ex.), Но мне нужно проверить, чтобы убедиться, что класс равен "card-banner false"и вернуть значения href, которые проходят эту проверку.

В настоящее время у меня есть: // div [содержит (@ class, 'product-grid-item card mb-4 shadow-sm') и class = 'card-link '] // a / @ href

Однако это ничего не возвращает, и я считаю, что мне нужно использовать предыдущее, однако я не могу заставить его работать.

Я подтвердил, что он может быть прочитан как // div [содержит (@ класс, 'card-banner false')]] // @ * возвращает правильное количество экземпляров.Мне просто нужно найти способ ссылаться на него правильно.

Спасибо!

1 Ответ

0 голосов
/ 25 ноября 2018

вы можете использовать preceding-sibling для выбора предыдущего элемента

//div[contains(@class,'card-banner false')]/preceding-sibling::a/@href
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...