проверка картинок в селениуме
#1
Отправлено 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"/>
#2
Отправлено 06 марта 2009 - 15:10
Сделай локаторы всех трёх картинок и проверь для каждого selenium.isElementPresent().не поможете новичку в Селениуме?
нужно проверить какая конкретно из 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"/>
#3
Отправлено 10 марта 2009 - 11:35
Сделал, только вот не работает...:(Сделай локаторы всех трёх картинок и проверь для каждого selenium.isElementPresent().не поможете новичку в Селениуме?
нужно проверить какая конкретно из 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"/>
например:
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\"]"));
проходит спокойно
#4
Отправлено 10 марта 2009 - 12:04
#5
Отправлено 10 марта 2009 - 12:13
не подскажете, как определить какая конкретно картинка в соотвествующей позицииЗначит все картинки присутствуют. Посмотри как именно они прячутся и отталкивайся от этого.
#6
Отправлено 10 марта 2009 - 12:26
А что подразумевается под позицией? Позиция в исходном HTML? В XPath это будет что-то вроде: "xpath=(//img)[3]" - 3-я картинка на странице.не подскажете, как определить какая конкретно картинка в соотвествующей позиции
#7
Отправлено 10 марта 2009 - 12:38
как проверить , что step_current.gif стоит именно на месте N-й картинки?А что подразумевается под позицией? Позиция в исходном HTML? В XPath это будет что-то вроде: "xpath=(//img)[3]" - 3-я картинка на странице.не подскажете, как определить какая конкретно картинка в соотвествующей позиции
#8
Отправлено 10 марта 2009 - 12:51
В данном случае от перестановки слов смысл не изменяется :) Мне непонятно, что значит "на месте N-й картинки" и "в соответствующей позиции". Я написал как сделать это если интересует позиция в DOM. Если интересует какая-то другая позиция, то приведи конкретный пример.как проверить , что step_current.gif стоит именно на месте N-й картинки?
#9
Отправлено 10 марта 2009 - 12:58
имеется несколько страниц, на каждой картинка step_current.gif в соответствующей позиции (от 1 до 11). вот и нужно проверить что она занимает правильное "место" в эдаком прогрессбаре. Допустим открыта 5 страница, соответственно step_current.gif на месте img[5].В данном случае от перестановки слов смысл не изменяется :) Мне непонятно, что значит "на месте N-й картинки" и "в соответствующей позиции". Я написал как сделать это если интересует позиция в DOM. Если интересует какая-то другая позиция, то приведи конкретный пример.как проверить , что step_current.gif стоит именно на месте N-й картинки?
#10
Отправлено 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".
#11
Отправлено 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".
у нас такая реализация "прогресс-бара".
XPath для img[3] - /html/body/div/div[2]/div[1]/img[3]<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>
возможно чтонить вроде
<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>
#12
Отправлено 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'
#13
Отправлено 10 марта 2009 - 20:41
А ещё учим HTML, чтобы хотя бы представлять, что это такое, т.к. с ним придётся много работать.
#14
Отправлено 13 марта 2009 - 16:53
<td>assertText</td>
<td>//html/body/div/div[2]/div[1]/img[@src="/pc/images/regcam/step_current.gif"]</td>
<td></td>
#15
Отправлено 13 марта 2009 - 16:59
#16
Отправлено 16 марта 2009 - 10:35
может таки подтолкнете на мысль как определить номер картинки step_current.gif в ряде из 11 картинок.Учим XPath и основы алгоритмов.
А ещё учим HTML, чтобы хотя бы представлять, что это такое, т.к. с ним придётся много работать.
#17
Отправлено 16 марта 2009 - 11:08
Дык ведь уже всё написано в предыдущих постах.может таки подтолкнете на мысль как определить номер картинки step_current.gif в ряде из 11 картинок.
1. Создаём уникальные локаторы для этой картинки в каждом положении.
2. Для каждого локатора в цикле проверяем isElementPresent(). Там где вернёт true, тот номер картинка и занимает.
#18
Отправлено 16 марта 2009 - 12:50
Дык ведь уже всё написано в предыдущих постах.может таки подтолкнете на мысль как определить номер картинки step_current.gif в ряде из 11 картинок.
1. Создаём уникальные локаторы для этой картинки в каждом положении.
2. Для каждого локатора в цикле проверяем isElementPresent(). Там где вернёт true, тот номер картинка и занимает.
мы имеем только вот это
как нам в этом случае определить положение "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>
#19
Отправлено 16 марта 2009 - 14:04
мы имеем только вот это
как нам в этом случае определить положение "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>
В этом случае можно поступить, например, так:
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: а вообще разработчикам надо по рукам за такую вёрстку
#20
Отправлено 18 марта 2009 - 09:49
извиняюсь,вроде получилось при помощи
<td>assertText</td>
<td>//html/body/div/div[2]/div[1]/img[@src="/pc/images/regcam/step_current.gif"]</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 анонимных