Перейти к содержимому

Фотография

Как получить несколько атрибутов?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 joika

joika

    Новый участник

  • Members
  • Pip
  • 72 сообщений

Отправлено 10 декабря 2008 - 11:06

Задача такая: нужно забрать со страницы все элементы с одним атрибутом (в идеале записать в массив) и потом пробежаться по ним. Есть ли в селениуме понятие массива как такового и как можно забрать такую информацию?
  • 0

#2 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 10 декабря 2008 - 13:09

Понятие массива как такового есть, т.е. некоторые методы могут возвращать массив строк (например, getAllLinks), но количество этих методов ограниченно и сами они очень негибкие, для конкретно твоего случая такого метода нет. Надо немного расширить SeleniumCore и добавить туда более универсальный метод, по коду это совсем немного.
  • 0

#3 joika

joika

    Новый участник

  • Members
  • Pip
  • 72 сообщений

Отправлено 10 декабря 2008 - 14:10

знать бы как...
  • 0

#4 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 10 декабря 2008 - 16:41

Из текста сообщения неясно, какой вид Selenium используется (имеется ввиду RC или Core).
Я подобную задачу решал для RC. Все элементы могут определяться по XPath, а если у них у всех есть одинаковое значение атрибута, то они все попадают под маску

//*[@<attribute_name>=<attribute_value>]

Например, все ссылки с атрибутом alt="Sample hint" попадают под маску

//a[@alt='Sample hint']

Также в Selenium есть функция getXPathCount, которая возвращает количество элементов, попадающих по маске. Соответственно, перебрать все элементы с данным атрибутом можно в виде (пример для Selenium-RC Java):

int count = selenium.getXPathCount( "//a[@alt='Sample hint']" );

for( int i = 1 ; i <= count ; i++ ){
System.out.println( selenium.getText( "//a[@alt='Sample hint'][" + i + "]" ) );
}

Вот как-то так. То есть, XPath вида, например,

//a[@alt='Sample hint']

указывает на первую ссылку с всплывающей подсказкой "Sample hint"
  • 0

#5 vitorg

vitorg

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений

Отправлено 10 декабря 2008 - 16:51

Все эти методы в любом случае работают через Core. Править придётся его.
Ну либо как более простой вариант - предложенный KaNoN'ом, но на IE он будет работать очень медленно.
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных