2013-09-10 3 views
0

Я пытаюсь использовать селектор css для выбора и элемента, но работает только для xpath. Что было бы эквивалентом этого xpath для css.Селекторы CSS Как получить индекс определенного элемента

driver.findElement(By.xpath("(//img[@alt='Authorise this row'])[2].click(); 

Если я использую CSS img[alt='Authorise this row'] Я получаю много результатов через сказать Firefinder. Есть ли способ, как xpath, где вы можете получить конкретный индекс результата.

+2

Ваш пример XPath неоднозначен, вам не хватает закрывающей двойной кавычки и двух закрывающих родителей - неясно, что принадлежит выражению и что такое индексный указатель массива. – millimoose

+0

См. Http://stackoverflow.com/questions/14401146/select-the-xth-element-on-a-page-that-is-a-yth-child-of-its-parent. Хотя кажется, что он охватывает немного другую вещь, на самом деле это тот же вопрос. Ответ: try ': nth-child (2)', но он, вероятно, не сработает для вас. Вы не можете использовать CSS для этого. Либо используйте XPath, либо выберите несколько элементов через CSS ('findElements()'), а затем используйте только один элемент, который вам нужен. –

ответ

0

CSS3 поддерживает: селектор nth-child. Например, следующие цели CSS только второе изображение:

img:nth-child(2) {...} 

Аргумент: п-й ребенок может быть либо индекс, ключевое слово или формула (например нечетное, даже.). Селектор выше выбирает всех детей второго изображения своих родителей. Можно направить его немного больше что-то вроде:

#container img:nth-child(2) 

Ссылка: :nth-child

Кроме того, вы можете использовать JQuery для выбора набора элементов, а затем ссылаться на одну из них по индексу. Вроде бы так:

var secondImage = $('img')[2]; 
+0

'img: nth-child (2)' не выбирает "только второе изображение". Он выбирает все изображения, которые являются вторыми детьми их родителей. Это эквивалентно выражению XPath: '// img [2]'. –

+1

@Slanec - да, вы правы, но он все еще может решить проблему, применив ее в контексте с чем-то вроде '#container img: nth-child (2)'. Я добавлю некоторые пояснения к моему ответу. Благодарю. – zigdawgydawg

+0

(// img [@ alt = 'Разрешить эту строку']) [2]) является правильным кодом для использования sorry – user1156718

Смежные вопросы