Есть ли способ итеративно сканировать каждую строку определенного столбца таблицы, у которого нет. строк меняется каждый раз при обновлении страницы?
Предположим, у меня есть таблица, которая отображается на веб-странице таким образом, с переключателями для каждой строки:
+---+--------+--------+--------+--------+
| | Letter | Colour | Number | Animal |
+---+--------+--------+--------+--------+
|? | A | Red | 111 | Dog |
+---+--------+--------+--------+--------+
| ◯ | B | Blue | 222 | Cat |
+---+--------+--------+--------+--------+
| ◯ | C | Green | 333 | Rabbit |
+---+--------+--------+--------+--------+
Отображаемые столбцы всегда одинаковы, но количество строк может отличаться. Предположим, у меня есть переменная: число = 222, и мне нужно искать в столбце «Число», пока не найду совпадение, а затем щелкнуть соответствующий переключатель.
Как я...
- Iteratively scan through all the elements in the "Number" Column?
- Click the corresponding radio button of the row where a match is found?
Вам не нужно выполнять какие-либо итерации по таблице, вам просто нужно написать свой XPath таким образом, чтобы он указывал на переключатель только в строке с определенным значением в одном из столбцов.
Допустим, ваш HTML-код выглядит так:
<table>
<tbody>
<tr>
<th />
<th>Letter</th>
<th>Colour</th>
<th>Number</th>
<th>Animal</th>
</tr>
<tr>
<td><input type = "radio" /></td>
<td>A</td>
<td>Red</td>
<td>111</td>
<td>Dog</td>
</tr>
<tr>
<td><input type = "radio" /></td>
<td>B</td>
<td>Blue</td>
<td>222</td>
<td>Cat</td>
</tr>
<tr>
<td><input type = "radio" /></td>
<td>C</td>
<td>Green</td>
<td>333</td>
<td>Rabbit</td>
</tr>
</tbody>
</table>
В этом случае XPath мог бы выглядеть так:
//tr[td[3]='Blue']/td[1]/input
Это означает: найдите мне элемент строки, в третьем столбце которого есть «синий», и как только вы это сделаете, верните элемент ввода в первом столбце этой строки.
Есть и другие способы добиться этого, Оси XPath может быть очень полезным:
//tr/td[3][.='Blue']/preceding-sibling::td/input
Это означает: найдите мне третью ячейку столбца со значением «Синий», и как только вы это сделаете, верните ввод, вложенный в любую предыдущую ячейку.
Первый имеет больше смысла, второй - просто показать, что обычно существует больше способов получить уникальную идентификацию элемента.