Нужна помощь в поиске xpath для элемента на основе webtable в приведенном ниже сценарии

#selenium #xpath #webdriver #domxpath

#selenium #xpath #webdriver #domxpath

Вопрос:

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

есть 3 раздела, как описано в прилагаемой оснастке-

  1. Tr<> выделено красным: строка, которую я мог бы выбрать на основе заданного значения столбца / текста [для ex- Test_j] с использованием xpath: //td[contains(.,'Test_j')]
  2. td<> коричневым цветом: есть кнопки tow B1 и B2 редактировать и удалять, я должен щелкнуть по обоим на основе текста, соответствующего на шаге 1
  3. в последнем обведен текст столбца «xpath», по которому я могу найти строку для редактирования.

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

Вот html, который я вижу в DOM:

 <tr kendogridlogicalrow="" data-kendo-grid-item-index="20" role="row" aria-rowindex="22" class="ng-star-inserted">
        <!---->
            <!---->
        
        <!---->
        <!----><td aria-selected="false" kendogridcell="" kendogridlogicalcell="" role="gridcell" colspan="1" aria-colindex="1" class="ng-star-inserted">
    <!---->
        <!----><!---->
            <!---->
            
                <div _ngcontent-elp-c18="" class="no-wrap ng-star-inserted">
                    <button _ngcontent-elp-c18="" class="mw-icon-button" mwiconbutton="pencil-alt"><em class="fa fa-pencil-alt" style="margin-right: 0px;"></em></button>
                    <button _ngcontent-elp-c18="" mwdeletebutton="" title="Delete"><i class="fa fa-trash-alt"></i></button>
                </div>
            
            <!---->
            <!---->
            <!---->
        
        <!---->
    
</td><td aria-selected="false" kendogridcell="" kendogridlogicalcell="" role="gridcell" colspan="1" aria-colindex="2" class="ng-star-inserted">
    <!---->
        <!----><!---->
            <!---->
            <!---->
            <!---->Test_j
            <!---->
        
        <!---->
    
</td><td aria-selected="false" kendogridcell="" kendogridlogicalcell="" role="gridcell" colspan="1" aria-colindex="3" class="ng-star-inserted">
    <!---->
        <!----><!---->
            <!---->
            <!---->
            <!---->General
            <!---->
        
        <!---->
    
</td><td aria-selected="false" kendogridcell="" kendogridlogicalcell="" role="gridcell" colspan="1" aria-colindex="4" class="ng-star-inserted">
    <!---->
        <!----><!---->
            <!---->
            
              <span _ngcontent-elp-c18="" class="ng-star-inserted">xxx xxx Lee</span>
            
            <!---->
            <!---->
            <!---->
        
        <!---->
    
</td><td aria-selected="false" kendogridcell="" kendogridlogicalcell="" role="gridcell" colspan="1" aria-colindex="5" class="ng-star-inserted" style="text-align: center;">
    <!---->
        <!----><!---->
            <!---->
            
                <span _ngcontent-elp-c18="" class="ng-star-inserted">6</span>
            
            <!---->
            <!---->
            <!---->
        
        <!---->
    
</td><td aria-selected="false" kendogridcell="" kendogridlogicalcell="" role="gridcell" colspan="1" aria-colindex="6" class="ng-star-inserted">
    <!---->
        <!----><!---->
            <!---->
            
                <em _ngcontent-elp-c18="" class="fa fa-check ng-star-inserted">
                </em>
            
            <!---->
            <!---->
            <!---->
        
        <!---->
    
</td><td aria-selected="false" kendogridcell="" kendogridlogicalcell="" role="gridcell" colspan="1" aria-colindex="7" class="ng-star-inserted">
    <!---->
        <!----><!---->
            <!---->
            
                <em _ngcontent-elp-c18="" class="fa fa-check ng-star-inserted">
                </em>
            
            <!---->
            <!---->
            <!---->
        
        <!---->
    
</td>
    </tr>
 

введите описание изображения здесь

Ответ №1:

Этот xpath должен работать для вас-

 //td[contains(.,'Test_j')]/preceding-sibling::td[1]/div/button[1]
 

Ответ №2:

Используйте одно из следующих xpath

Используется preceding-sibling для идентификации столбца.

 //td[contains(.,'Test_j')]/preceding-sibling::td[1]//button[@mwiconbutton='pencil-alt']
 

или определите кнопку row and then

 //tr[.//td[contains(.,'Test_j')]]//button[@mwiconbutton='pencil-alt' and @class='mw-icon-button']