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

Фотография

проверка картинок в селениуме


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

#1 VASya

VASya

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

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


Отправлено 06 марта 2009 - 14:55

не поможете новичку в Селениуме?
нужно проверить какая конкретно из 3 картинок стоит:<img class="progress_light" src="/pc/images/regcam/step_on.gif"/>,
<img class="progress_light" src="/pc/images/regcam/step_current.gif"/> или <img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
  • 0

#2 vitorg

vitorg

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

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

Отправлено 06 марта 2009 - 15:10

не поможете новичку в Селениуме?
нужно проверить какая конкретно из 3 картинок стоит:<img class="progress_light" src="/pc/images/regcam/step_on.gif"/>,
<img class="progress_light" src="/pc/images/regcam/step_current.gif"/> или <img class="progress_light" src="/pc/images/regcam/step_off.gif"/>

Сделай локаторы всех трёх картинок и проверь для каждого selenium.isElementPresent().
  • 0

#3 VASya

VASya

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

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


Отправлено 10 марта 2009 - 11:35

не поможете новичку в Селениуме?
нужно проверить какая конкретно из 3 картинок стоит:<img class="progress_light" src="/pc/images/regcam/step_on.gif"/>,
<img class="progress_light" src="/pc/images/regcam/step_current.gif"/> или <img class="progress_light" src="/pc/images/regcam/step_off.gif"/>

Сделай локаторы всех трёх картинок и проверь для каждого selenium.isElementPresent().

Сделал, только вот не работает...:(
например:
1 картинка "/pc/images/regcam/step_on.gif\";
2 картинка тоже;
3я картинка /pc/images/regcam/step_current.gif
тест:
assertTrue(selenium.isElementPresent("//img[1]"));
assertTrue(selenium.isElementPresent("//html/body/div/div[2]/div[1]/img[@src=\"/pc/images/regcam/step_on.gif\"]"));
assertTrue(selenium.isElementPresent("//img[2]"));
assertTrue(selenium.isElementPresent("//html/body/div/div[2]/div[1]/img[@src=\"/pc/images/regcam/step_current.gif\"]"));
assertTrue(selenium.isElementPresent("//img[3]"));
assertTrue(selenium.isElementPresent("//html/body/div/div[2]/div[1]/img[@src=\"/pc/images/regcam/step_off.gif\"]"));

проходит спокойно
  • 0

#4 vitorg

vitorg

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

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

Отправлено 10 марта 2009 - 12:04

Значит все картинки присутствуют. Посмотри как именно они прячутся и отталкивайся от этого.
  • 0

#5 VASya

VASya

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

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


Отправлено 10 марта 2009 - 12:13

Значит все картинки присутствуют. Посмотри как именно они прячутся и отталкивайся от этого.

не подскажете, как определить какая конкретно картинка в соотвествующей позиции
  • 0

#6 vitorg

vitorg

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

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

Отправлено 10 марта 2009 - 12:26

не подскажете, как определить какая конкретно картинка в соотвествующей позиции

А что подразумевается под позицией? Позиция в исходном HTML? В XPath это будет что-то вроде: "xpath=(//img)[3]" - 3-я картинка на странице.
  • 0

#7 VASya

VASya

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

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


Отправлено 10 марта 2009 - 12:38

не подскажете, как определить какая конкретно картинка в соотвествующей позиции

А что подразумевается под позицией? Позиция в исходном HTML? В XPath это будет что-то вроде: "xpath=(//img)[3]" - 3-я картинка на странице.

как проверить , что step_current.gif стоит именно на месте N-й картинки?
  • 0

#8 vitorg

vitorg

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

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

Отправлено 10 марта 2009 - 12:51

как проверить , что step_current.gif стоит именно на месте N-й картинки?

В данном случае от перестановки слов смысл не изменяется :) Мне непонятно, что значит "на месте N-й картинки" и "в соответствующей позиции". Я написал как сделать это если интересует позиция в DOM. Если интересует какая-то другая позиция, то приведи конкретный пример.
  • 0

#9 VASya

VASya

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

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


Отправлено 10 марта 2009 - 12:58

как проверить , что step_current.gif стоит именно на месте N-й картинки?

В данном случае от перестановки слов смысл не изменяется :) Мне непонятно, что значит "на месте N-й картинки" и "в соответствующей позиции". Я написал как сделать это если интересует позиция в DOM. Если интересует какая-то другая позиция, то приведи конкретный пример.

имеется несколько страниц, на каждой картинка step_current.gif в соответствующей позиции (от 1 до 11). вот и нужно проверить что она занимает правильное "место" в эдаком прогрессбаре. Допустим открыта 5 страница, соответственно step_current.gif на месте img[5].
  • 0

#10 vitorg

vitorg

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

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

Отправлено 10 марта 2009 - 13:38

Вроде всё просто, но зависит от реализации "эдакого прогресс-бара". Предположим, что там семантическая вёрстка:
<ul>
  <li>
	<img src="...">
  </li>
  <li>
	<img src="step_current.gif">
  </li>
  <li>
	<img src="...">
  </li>
</ul>
Тогда XPath будет такой: "xpath=//ul/li[2]/img[@src='step_current.gif']" <- проверка, что во второй позиции находится картинка с src="step_current.gif".
  • 0

#11 VASya

VASya

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

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


Отправлено 10 марта 2009 - 13:54

Вроде всё просто, но зависит от реализации "эдакого прогресс-бара". Предположим, что там семантическая вёрстка:

<ul>
  <li>
	<img src="...">
  </li>
  <li>
	<img src="step_current.gif">
  </li>
  <li>
	<img src="...">
  </li>
</ul>
Тогда XPath будет такой: "xpath=//ul/li[2]/img[@src='step_current.gif']" <- проверка, что во второй позиции находится картинка с src="step_current.gif".


у нас такая реализация "прогресс-бара".

<div class="progress_top_row">
<span class="progress_start_on">Start</span>
<img class="progress_light" src="/pc/images/regcam/step_on.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_on.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_current.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<span class="progress_finish_off">Finish</span>
</div>

XPath для img[3] - /html/body/div/div[2]/div[1]/img[3]

возможно чтонить вроде

<tr>
<td>storeElementPositionLeft</td>
<td>//img[3]</td>
<td>CurrentPosition</td>
</tr>
....
<tr>
<td>assertElementPositionLeft</td>
<td>//html/body/div/div[2]/div[1]/img[@src=&quot;/pc/images/regcam/step_current.gif&quot;]</td>
<td>CurrentPosition</td>
</tr>


  • 0

#12 VASya

VASya

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

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


Отправлено 10 марта 2009 - 14:25

возможно чтонить вроде

<tr>
<td>storeElementPositionLeft</td>
<td>//img[3]</td>
<td>CurrentPosition</td>
</tr>
....
<tr>
<td>assertElementPositionLeft</td>
<td>//html/body/div/div[2]/div[1]/img[@src="/pc/images/regcam/step_current.gif"]</td>
<td>CurrentPosition</td>
</tr>


только вот не работает, выдает [error] Actual value '624' did not match 'CurrentPosition'
  • 0

#13 vitorg

vitorg

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

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

Отправлено 10 марта 2009 - 20:41

Учим XPath и основы алгоритмов.
А ещё учим HTML, чтобы хотя бы представлять, что это такое, т.к. с ним придётся много работать.
  • 0

#14 VASya

VASya

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

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


Отправлено 13 марта 2009 - 16:53

вроде получилось при помощи
<td>assertText</td>
<td>//html/body/div/div[2]/div[1]/img[@src=&quot;/pc/images/regcam/step_current.gif&quot;]</td>
<td></td>
  • 0

#15 vitorg

vitorg

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

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

Отправлено 13 марта 2009 - 16:59

А зачем здесь assertText? В IDE внизу по каждому методу есть документация, assertText в данном случае совсем не в тему, надо использовать assertElementPresent тогда уж.
  • 0

#16 VASya

VASya

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

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


Отправлено 16 марта 2009 - 10:35

Учим XPath и основы алгоритмов.
А ещё учим HTML, чтобы хотя бы представлять, что это такое, т.к. с ним придётся много работать.

может таки подтолкнете на мысль как определить номер картинки step_current.gif в ряде из 11 картинок. :crazy:
  • 0

#17 vitorg

vitorg

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

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

Отправлено 16 марта 2009 - 11:08

может таки подтолкнете на мысль как определить номер картинки step_current.gif в ряде из 11 картинок. :crazy:

Дык ведь уже всё написано в предыдущих постах.
1. Создаём уникальные локаторы для этой картинки в каждом положении.
2. Для каждого локатора в цикле проверяем isElementPresent(). Там где вернёт true, тот номер картинка и занимает.
  • 0

#18 VASya

VASya

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

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


Отправлено 16 марта 2009 - 12:50

может таки подтолкнете на мысль как определить номер картинки step_current.gif в ряде из 11 картинок. :blush:

Дык ведь уже всё написано в предыдущих постах.
1. Создаём уникальные локаторы для этой картинки в каждом положении.
2. Для каждого локатора в цикле проверяем isElementPresent(). Там где вернёт true, тот номер картинка и занимает.


мы имеем только вот это

<div class="progress_top_row">
<span class="progress_start_on">Start</span>
<img class="progress_light" src="/pc/images/regcam/step_on.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_on.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_current.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<span class="progress_finish_off">Finish</span>
</div>

как нам в этом случае определить положение "step_current.gif"?
  • 0

#19 vitorg

vitorg

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

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

Отправлено 16 марта 2009 - 14:04

мы имеем только вот это

<div class="progress_top_row">
<span class="progress_start_on">Start</span>
<img class="progress_light" src="/pc/images/regcam/step_on.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_on.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_current.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<img class="progress_light" src="/pc/images/regcam/step_off.gif"/>
<span class="progress_finish_off">Finish</span>
</div>

как нам в этом случае определить положение "step_current.gif"?


В этом случае можно поступить, например, так:
public static int whichPlaceIsImage() {
		return Integer.parseInt(selenium.getEval("for (var i = 1; i <= 11; i++) {" +
				" if (this.browserbot.findElement('xpath=//img[' + i + ']').src == '/pc/images/regcam/step_current.gif') {" +
				"  return i;" +
				" }" +
				"}" +
				"return 0;"));
	}
Это просто, чтобы понять смысл, на практике надо делать по-человечески.

PS: а вообще разработчикам надо по рукам за такую вёрстку :blush:
  • 0

#20 VASya

VASya

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

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


Отправлено 18 марта 2009 - 09:49

вроде получилось при помощи
<td>assertText</td>
<td>//html/body/div/div[2]/div[1]/img[@src=&quot;/pc/images/regcam/step_current.gif&quot;]</td>
<td></td>

извиняюсь,
получилось при использовании

<tr>
<td>assertAttribute</td>
<td>//img[3]@src</td>
<td>*/pc/images/regcam/step_current.gif</td>
</tr>


  • 0


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

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