CSS селектор для таблицы определенного класса в Selenium - PullRequest
2 голосов
/ 08 января 2010

Несмотря на то, что я собираюсь использовать этот селектор CSS в Selenium, он должен быть достаточно общим.

У меня есть страница с таблицей класса "список", и это может происходить несколько раз. Я хочу выяснить каждое вхождение и сколько строк в каждой таблице. Так что для этого я мог бы использовать таблицу [class = 'list'] и дать мне все таблицы этого класса на странице. В этом примере давайте скажем, что это 3. Теперь я хочу перебрать каждую из этих таблиц, поэтому я попробовал table [class = 'list']: nth-child (1) для первого вхождения & table [class = 'list ']: nth-child (2) для второго появления и так далее. Я думал, что таблица [class = 'list']: nth-child (1) выдаст мне первое вхождение, но я не могу использовать нотацию nth-child (n).

Если я использую table [class = 'list']: nth-child (odd), я получаю все таблицы с нечетными номерами, но я не могу специально указать целевой таблицы, сказав table [class = 'list']: п-й ребенок (3). Это не дает мне результата назад. Что я делаю не так?

Кстати, я использую аддон FireFinder для Firebug, чтобы оценить мои селекторы CSS на тестовой странице.

Ответы [ 2 ]

1 голос
/ 08 января 2010

table [class = 'list']: nth-child (1) будет сопоставлять все элементы таблицы с классом list, являющимся первым дочерним элементом их родителя. Это не имеет никакого отношения к тому, сколько элементов соответствует или каков порядок этого набора, хотя, если бы у всех таблиц был один и тот же родительский элемент (а у этого родительского элемента не было других дочерних элементов), ваш метод работал бы.

Вы можете перебирать элементы, возвращаемые table.list, каким-либо другим способом или каким-то образом изменять свой селектор, точные детали которого будут зависеть от фактической структуры вашей страницы.

0 голосов
/ 08 января 2010

Возможно, XPath подойдет вам лучше?

//table[@class='list' and position()=1]
//table[@class='list' and position()=2]
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...