Как использовать xpath, чтобы определить, какой дочерний элемент мы выбираем? - PullRequest
0 голосов
/ 27 февраля 2019

Например, если у нас есть xml следующим образом:

<tr>
 <th>LION</th>
 <th>TIGER</th>
 <th>CHEETAH</th>
 <th>GIRAFFE</th>
 <th>BEAR</th>
</tr>

, и я хотел выбрать элемент xpath для GIRAFFE ... как бы (используя xpath) я мог сказать, какой элемент подЖИРАФ элемент есть?Очевидно, что, глядя на xml, он // tr / th [4] .... но есть ли способ, которым я могу использовать xpath, чтобы определить, что это 4-й элемент в ??

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Если вы хотите выбрать элемент столбца по тексту заголовка в строках и использовать его в Selenium, вот несколько примеров:

Пример HTML:

<table>
    <thead>
        <tr>
            <th>LION</th>
            <th>TIGER</th>
            <th>CHEETAH</th>
            <th>GIRAFFE</th>
            <th>BEAR</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>4</td>
            <td>5</td>
        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>4</td>
            <td>5</td>
        </tr>
    </tbody>
</table>

XPATH для использования Selenium:

//table/tbody/tr/td[count(//table//th[.="GIRAFFE"]/preceding::th)+1]

Пример использования Selenium Java:

String animalName = "GIRAFFE";

WebElement element = driver.findElement(By.xpath("//table/tbody/tr/td[count(//table//th[.='" + animalName + "']/preceding::th)+1]"));

WebElement animalElementFromRow1 = driver.findElement(By.xpath("//table/tbody/tr[1]/td[count(//table//th[.='" + animalName + "']/preceding::th)+1]"));
WebElement animalElementFromRow2 = driver.findElement(By.xpath("//table/tbody/tr[2]/td[count(//table//th[.='" + animalName + "']/preceding::th)+1]"));
0 голосов
/ 27 февраля 2019

Не совсем уверен, что вы спрашиваете, но, возможно, один из этих XPath поможет ...


Это выражение XPath,

count(/tr/th[.="GIRAFFE"]/preceding-sibling::th)+1

оценивается как

4

указывает на то, что элемент GIRAFFE th является 4-м элементом th.


Этот XPath,

/tr/th[.="GIRAFFE"]

выберет GIRAFFE th в силу его содержания.


Этот XPath,

/tr/th[.="CHEETAH"]/following-sibling::th[1]

выберет ЖИРАФА th в силу своего положения после ЧИТА th.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...