Использование селекторов CSS для доступа к определенным строкам таблицы с помощью selenium

Если у меня есть следующий HTML:

<tbody id="items">
<tr><td>Item 1</td></tr>
<tr><td>Item 2</td></tr>
<tr><td>Item 3</td></tr>
<tr><td>Item 4</td></tr>
<tr><td>Item 5</td></tr>
<tr><td>Item 6</td></tr>
</tbody>

Как использовать селекторы CSS с селеном для доступа к элементу 4 (или действительно любому элементу, который я хотел)?

5 ответов


вы можете использовать селектор nth-child:

#items tr:nth-child(4) {color:#F00;}

живой пример:http://jsfiddle.net/Flack/G8QPB/

но не знаю, работает ли он с селеном.

но, согласно документам, он должен.

В настоящее время локатор селекторов css поддерживает все селекторы css1, css2 и css3, кроме пространства имен в css3, некоторые псевдоклассы (: nth-of-type,: nth-last-of-type,: first-of-type,: last-of-type,: only-of-type, :visited,: hover,: active, : фокус,: неопределенный) и псевдо-элементы (:: первая строка,:: первая буква,:: выбор,:: до,:: после).


можно попробовать поиск по любой внутренний текст

css=td:contains('Item 4')

нашел это полезным: http://saucelabs.com/blog/index.php/2010/01/selenium-totw-css-selectors-in-selenium-demystified/


вы хотите выбрать по содержанию ("пункт 4")? По положению (4-й ряд)? Или <tr id="foo"> и выбрать tr#foo>td вариант?


вы можете использовать xpath, чтобы найти его несколькими способами, но самый простой:

//td[text()='Item 4']

selenium.getText("css=table>tbody[id=items]>tr:nth-child(3)>td(3)");