Как перемещаться по элементам массива?
#1
Отправлено 02 февраля 2009 - 08:03
Хочу удалить ранее добавленную картинку.
Хочу создать массив имен (src) картинок на странице до добавления, и после. а потом найти новый элемент.
Вопрос - как двигаться по элементам img послед-о, если имена ни как не связаны
Так не работает. Находит только 1-й элемент.
$this->img_arr2[$i]=$this->selenium->getAttribute('//img['.$i.'][@alt="Увеличить фотографию"]@src');
Пробовала и такой вариант - ненаходить элементы
$this->img_arr2[$i]=$this->selenium->getText('//img[@alt="Увеличить фотографию"]['.$i.']');
#2
Отправлено 02 февраля 2009 - 09:47
В вашем случае лучше поступить как:На моем пути возникла новая задача:
Хочу удалить ранее добавленную картинку.
Хочу создать массив имен (src) картинок на странице до добавления, и после. а потом найти новый элемент.
Вопрос - как двигаться по элементам img послед-о, если имена ни как не связаны
Так не работает. Находит только 1-й элемент.
$this->img_arr2[$i]=$this->selenium->getAttribute('//img['.$i.'][@alt="Увеличить фотографию"]@src');
Пробовала и такой вариант - ненаходить элементы
$this->img_arr2[$i]=$this->selenium->getText('//img[@alt="Увеличить фотографию"]['.$i.']');
Во-первых, мы должны запомнить пути ко всем картинкам:
$count = $this->selenium->getXPathCount('//img[@alt="Увеличить фотографию"]'); for( $i = 0; $i <$count; $i++ ){ $this->img_arr2[$i] = $this->selenium->getAttribute('//img[@alt="Увеличить фотографию"]['.$i.']@src'); }
А вот теперь, когда мы сняли весь список рисунков, по аналогии можем снять список рисунков поле изменения и сопоставить 2 массива
#3
Отправлено 02 февраля 2009 - 12:30
$count = $this->selenium->getXPathCount('//img[@alt="Увеличить фотографию"]'); for( $i = 0; $i <$count; $i++ ){ $this->img_arr2[$i] = $this->selenium->getAttribute('//img[@alt="Увеличить фотографию"]['.$i.']@src'); }
А вот теперь, когда мы сняли весь список рисунков, по аналогии можем снять список рисунков поле изменения и сопоставить 2 массива
Этот вариант я тоже пробовала :( Вот что мне выдает в качестве массива
Array ( [0] => OR: Element //img[@alt="в•Ёг╨▓╨╡╨╗╨╕╤З╨╕╤Вв•¤М в•¤Д╨╛╤В╨╛╨│╤А╨░╤Д╨╕╤О"][0] not found [1] => http://img.rufox.tmp/files/12075profile_l.jpg [2] => OR: Element //img[@alt="в•Ёг╨▓╨╡╨╗╨╕╤З╨╕╤Вв•¤М в•¤Д╨╛╤В╨╛╨│╤А╨░╤Д╨╕╤О"][2] not found [3] => OR: Element //img[@alt="в•Ёг╨▓╨╡╨╗╨╕╤З╨╕╤Вв•¤М в•¤Д╨╛╤В╨╛╨│╤А╨░╤Д╨╕╤О"][3] not found )Использую MozillaFirefox
Это вывод в командную строку - элементы моего массива. селен упрямо находит только элемент под номером 1
#4
Отправлено 02 февраля 2009 - 13:24
$count = $this->selenium->getXPathCount('//img[@alt="Увеличить фотографию"]'); for( $i = 1; $i <= $count; $i++ ){ $this->img_arr2[$i] = $this->selenium->getAttribute('xpath=((//img[@alt="Увеличить фотографию"])['.$i.'])@src'); }
Вот так получаем значения src для всех рисунков.
То есть, проставляем скобки, чтоб приоритизировать поиск элементов. Да, и в этом примере я поменял индексацию. Она для XPath начинается не с 0, а с 1. Постоянно путаю.
#5
Отправлено 02 февраля 2009 - 13:35
Все верно - так работает. Массив получаю.Детализируем XPath:
$count = $this->selenium->getXPathCount('//img[@alt="Увеличить фотографию"]'); for( $i = 1; $i <= $count; $i++ ){ $this->img_arr2[$i] = $this->selenium->getAttribute('xpath=((//img[@alt="Увеличить фотографию"])['.$i.'])@src'); }
Спасибо!
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных