Задать вопрос
@ToT_Camii_IIec

Python Selenium xpath как выбрать нужный чекбокс по тексту (span) напротив?

Добрый день ,друзья,я новичок,начал постигать дзен недавно.
Вторые сутки ломаю голову по решению поставленной мне задачи.
Ситуация в следующем

<input type="hidden" name="hash" value="56fe1d80">
  <input type="hidden" name="version" value="0cf343">
  <input type="hidden" name="form[category_id]" value="all_goods">
  
    <thead class="with_bg">
    <tr>                
      <td class="ul header " rel="9" colspan="2"><span>Изображ.</span></td>
      <td class="ur"><input class="check_all" type="checkbox" value="1"></td>
      <td class="ur header " rel="15" title="Код товара (Артикул)"><span>Артикул</span></td>
      <td class="ur">Свойства</td>
      <td class="ur header " rel="1"><span>Розница, руб</span></td>
      <td class="ur header " rel="5"><span>Остаток</span></td>
      <td class="ur">добавить</td>
    </tr>
  </thead><tbody id="gl164154694">
    <tr class="goods_group order_add_group second">
      <td class="bl img" rowspan="4"><a href="/admin/store_goods_edit/164154694" data-load="fast" title="Перейти на страницу редактирования «Рамка дисплея (средняя часть корпуса) для Samsung Galaxy A72 (A725)»"><img class="centeringimage50 with_border" src="/web/static/img/zero.gif" style="background-image:url('https://i4.stat01.com/2/7332/173310771/780289/ramka-displeya-srednyaya-chast-korpusa-dlya-samsung-galaxy-a72-a725.jpg');"></a></td>
      <td class="br zoom" rowspan="4">
        <div class="rel">
                      <i class="sort_zoom" data-rel="galery_164154694" alt="Увеличить" title="Увеличить изображение товара"></i>
            <a class="sort_zoom" href="https://i4.stat01.com/2/7332/173310771/6e1ffd/ramka-displeya-srednyaya-chast-korpusa-dlya-samsung-galaxy-a72-a725.jpg" rel="galery_164154694" title="Рамка дисплея (средняя часть корпуса) для Samsung Galaxy A72 (A725)"></a>                  </div>
      </td>
      <td class="br" colspan="6"><a href="/admin/store_goods_edit/164154694" data-load="fast">Рамка дисплея (средняя часть корпуса) для Samsung Galaxy A72 (A725)</a></td>
    </tr>
        <tr class="goods_group ui-selectee">
      <td class="bl check"><input type="checkbox" name="form[mod][276510600][check]" value="1"></td>
      <td class="br"><span>AP-116515</span></td>
      <td class="br"><table class="property_data" cellspacing="0"><tbody><tr><td class="name" rel="1284440"><span>Цвет:</span></td><td><span>Черный</span></td></tr></tbody></table></td>
      <td class="br cost"><span>1 390,00</span></td>
      <td class="br cost"><span>990 шт</span></td>
      <td class="br cost addToOrderInput"><input class="num with-arrows count" name="form[mod][276510600][count]" value="1" data-min="1"><u class="input-arrows"><i class="up" title="+1"></i><i class="down" title="-1"></i></u></td>
    </tr>
        <tr class="goods_group ui-selectee">
      <td class="bl check"><input type="checkbox" name="form[mod][276510601][check]" value="1"></td>
      <td class="br"><span>AP-116516</span></td>
      <td class="br"><table class="property_data" cellspacing="0"><tbody><tr><td class="name" rel="1284440"><span>Цвет:</span></td><td><span>Синий</span></td></tr></tbody></table></td>
      <td class="br cost"><span>1 390,00</span></td>
      <td class="br cost"><span>990 шт</span></td>
      <td class="br cost addToOrderInput"><input class="num with-arrows count" name="form[mod][276510601][count]" value="1" data-min="1"><u class="input-arrows"><i class="up" title="+1"></i><i class="down" title="-1"></i></u></td>
    </tr>
        <tr class="goods_group ui-selectee">
      <td class="bl check"><input type="checkbox" name="form[mod][276510602][check]" value="1"></td>
      <td class="br"><span>AP-116517</span></td>
      <td class="br"><table class="property_data" cellspacing="0"><tbody><tr><td class="name" rel="1284440"><span>Цвет:</span></td><td><span>Фиолетовый</span></td></tr></tbody></table></td>
      <td class="br cost"><span>1 390,00</span></td>
      <td class="br cost"><span>990 шт</span></td>
      <td class="br cost addToOrderInput"><input class="num with-arrows count" name="form[mod][276510602][count]" value="1" data-min="1"><u class="input-arrows"><i class="up" title="+1"></i><i class="down" title="-1"></i></u></td>
    </tr>
      </tbody>


Как с помощью XPATH достать именно тот чекбокс в котором будет напротив него стоять именно нужный мне AP-116517
Я понимаю что его достать можно через атрибут name="form[mod][276510602][check]", но задача найти именно исходя из артикула "AP-116517". Возможно ли это? Я думаю в программировании все возможно. Может и через перебор по TAG_NAME а потом через XPATH.... Я почти сдаюсь,но не теряю надежды.
Буду весьма признателен.
  • Вопрос задан
  • 274 просмотра
Подписаться 1 Средний 6 комментариев
Решения вопроса 1
alekciy
@alekciy
Вёбных дел мастер
Нужно сначала найти span с заданным текстом (на самом деле с безымянным текстовым блоков внутри с заданным тестом) после чего поднять в разметке до первого input перед ним.
//span[text()[contains(., "AP-116517")]]/preceding::input[1]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы