Выяснить XPath, который полезен в Robot Framework - PullRequest
0 голосов
/ 04 декабря 2018

Мне нужен доступ к первой ячейке чего-то, что выглядит как таблица (но немного странно - DIV для первого столбца структурно «выше» остальных ячеек в той же строке).

<div class="slick-viewport slick-viewport-top slick-viewport-left" tabindex="0" hidefocus="" style="overflow: auto; width: 100%; height: 513px;">
   <div class="grid-canvas grid-canvas-top grid-canvas-left" tabindex="0" hidefocus="" style="height: 825px; width: 1336px;" unselectable="on">
      <div class="ui-widget-content slick-row  even lastClicked selected" role="row" row="0" style="top:0px;">
         <div class="slick-cell l0 r0  uppercase selected" aria-describedby="inforDataGrid160360C1" tabindex="-1" role="gridcell"><span style="float: left;display:inline-block;height:1px;width:0px"></span><button type="button" class="tree-expand inforIconButton  closed"><span></span></button><span>ABC</span></div>
         <div class="slick-cell l1 r1  uppercase selected" aria-describedby="inforDataGrid160360C2" tabindex="-1" role="gridcell">DEF</div>
         <div class="slick-cell l2 r2  uppercase selected" aria-describedby="inforDataGrid160360C3" tabindex="-1" role="gridcell">GHI</div>
      </div>
      <div class="ui-widget-content slick-row  odd" role="row" row="1" style="top:25px;">
         <div class="slick-cell l0 r0  uppercase" aria-describedby="inforDataGrid160360C1" tabindex="-1" role="gridcell"><span style="float: left;display:inline-block;height:1px;width:0px"></span><button type="button" class="tree-expand inforIconButton  closed"><span></span></button><span>JKL</span></div>

Я ищу что-то полезное, что указывает на ABC.Как можно видеть выше, у div есть свойство row="0", которое кажется разумным для использования.У div с ABC in есть класс l0 r0, который также кажется полезным (но то, что немного противоречит интуиции, так это то, что класс следующей ячейки в той же строке - содержащий DEF) - не l0 r1 или l1 r0 или что-то вродеэто но вместо l1 r1).

Кроме того, на многих уровнях DIV есть id="contentBody", который я хотел бы включить.

Так что-то вроде //contentBody/*/row="0"/class="l0 r0".

Как мне построить этот XPath?

(DEF - вторая ячейка / столбец в первой строке, GHI - третья ячейка / столбец в первой строке. JKL - первая ячейка / столбец во второйЯ включил это, чтобы вы поняли, как устроена эта таблица).

1 Ответ

0 голосов
/ 04 декабря 2018

Этот должен вернуть требуемый div:

//div[@id="contentBody"]//div[@row="0"]/div[contains(@class, "l0") and contains(@class, "r0")]

То же самое в CSS-селекторе:

div#contentBody div[row="0"]>div.l0.r0

Вы можете использовать шпаргалку селекторов для создания селекторов XPath / CSS, а также учебник , документация для глубокого понимания

...