Я использую Selen-Client для тестирования сайта.Я хочу получить все теги, соответствующие определенному селектору, а затем вернуть атрибуты href обратно в массив.Может кто-нибудь сказать мне, как я могу это сделать?Например, это возвращает href первого совпадающего тега 'a':
browser.get_attribute "//a[contains(@id,'friendImageLink')]/@href"
=> "http://asite/some-path"
Могу ли я сделать вышеупомянутое и получить массив строк href?Такое чувство, что это должно быть легко, но я не могу разобраться: / Если я делаю это в firebug
$x("//a[contains(@id,'friendImageLink')]/@href")
Я получаю массив объектов назад, так что мне кажется, что я близко.
спасибо, макс.
РЕДАКТИРОВАТЬ - я думал о подсчете совпадающих элементов и затем итерации по ним, но я не могу выбрать n-й элемент вообще.Например, у рассматриваемой страницы есть 38 тегов, соответствующих условию «содержит», но если я сделаю это
browser.get_attribute "//a[contains(@id,'friendImageLink')][2]/@href"
, я получу сообщение об ошибке, говорящее Selenium :: CommandError: OR: Element / downndant ::a [содержит (@ id, 'friendImageLink')] [2] / не найдено
РЕДАКТИРОВАТЬ - я только что нашел способ.@browser.get_all_links
возвращает все идентификаторы всех ссылок на странице в массиве.Затем я могу найти те, которые мне нужны, и перебрать получившийся отфильтрованный массив, получив каждую ссылку и получив ее href.например,
@browser.get_all_links.grep(/friendImageLink/).collect{|link_id| @browser.get_attribute("//a[@id='#{link_id}']/@href") }