Задача такая: нужно забрать со страницы все элементы с одним атрибутом (в идеале записать в массив) и потом пробежаться по ним. Есть ли в селениуме понятие массива как такового и как можно забрать такую информацию?
Как получить несколько атрибутов?
Автор joika, 10 дек 2008 11:06
Сообщений в теме: 4
#1
Отправлено 10 декабря 2008 - 11:06
#2
Отправлено 10 декабря 2008 - 13:09
Понятие массива как такового есть, т.е. некоторые методы могут возвращать массив строк (например, getAllLinks), но количество этих методов ограниченно и сами они очень негибкие, для конкретно твоего случая такого метода нет. Надо немного расширить SeleniumCore и добавить туда более универсальный метод, по коду это совсем немного.
#3
Отправлено 10 декабря 2008 - 14:10
знать бы как...
#4
Отправлено 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"
Я подобную задачу решал для 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"
#5
Отправлено 10 декабря 2008 - 16:51
Все эти методы в любом случае работают через Core. Править придётся его.
Ну либо как более простой вариант - предложенный KaNoN'ом, но на IE он будет работать очень медленно.
Ну либо как более простой вариант - предложенный KaNoN'ом, но на IE он будет работать очень медленно.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных