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

Фотография

Как перемещаться по элементам массива?


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

#1 anechka07

anechka07

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

  • Members
  • Pip
  • 41 сообщений
  • ФИО:К.А.Г.
  • Город:Россия, Краснодар

Отправлено 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.']');
  • 0

#2 KaNoN

KaNoN

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

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

Отправлено 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 массива
  • 0

#3 anechka07

anechka07

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

  • Members
  • Pip
  • 41 сообщений
  • ФИО:К.А.Г.
  • Город:Россия, Краснодар

Отправлено 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
  • 0

#4 KaNoN

KaNoN

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

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

Отправлено 02 февраля 2009 - 13:24

Детализируем 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');
}

Вот так получаем значения src для всех рисунков.
То есть, проставляем скобки, чтоб приоритизировать поиск элементов. Да, и в этом примере я поменял индексацию. Она для XPath начинается не с 0, а с 1. Постоянно путаю.
  • 0

#5 anechka07

anechka07

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

  • Members
  • Pip
  • 41 сообщений
  • ФИО:К.А.Г.
  • Город:Россия, Краснодар

Отправлено 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');
}

Все верно - так работает. Массив получаю.
Спасибо! :crazy:
  • 0


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

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