XPath, как выбрать определенный div внутри строки таблицы - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь выбрать определенный div, расположенный в метке <td></td>, на основе текста, находящегося в другом теге <td></td>. Вероятно, HTML-код опишет это проще:

<tr>
    <td> 
        <div class="name">test1</div>
    </td>
    <td> 
        <div class="created">Tom</div>
    </td>
    <td> 
        <div class="custom">Disabled</div>
    </td>
    <td> 
        <div class="custom">Failed</div>
    </td>
</tr>
<tr>
    <td> 
        <div class="name">test2</div>
    </td>
    <td> 
        <div class="created">Tom</div>
    </td>
    <td> 
        <div class="custom">Disabled</div>
    </td>
    <td> 
        <div class="custom">Failed</div>
    </td>
</tr>
<tr>
    <td> 
        <div class="name">test3</div>
    </td>
    <td> 
        <div class="created">Kate</div>
    </td>
    <td> 
        <div class="custom">Disabled</div>
    </td>
    <td> 
        <div class="custom">Failed</div>
    </td>
</tr>

Так что в этом примере я хотел бы выбрать с помощью Xpath вторую строку и div с Failed текстом. Но я не могу использовать индексирование, потому что размер и размещение не всегда постоянны и могут меняться во времени. Так что в моем случае только уникальное поле - это div с классом имени test2.

Я думал об использовании возможно following-sibling. Может быть, что-то вроде этого: \\tr\div[@class='name' and text()='test1'] а что дальше? div не брат, а td.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Если вы пытаетесь получить статус теста на основе имени теста, используйте приведенный ниже xpath.

(//div[normalize-space(.)='test2' and @class='name']/ancestor::tr//div)[last()]
1 голос
/ 07 марта 2019

Я смог решить ее с помощью:

//td/div[text()='test1']/ancestor::tr/td/div[@class='custom' and text()='Failed']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...