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

Фотография

link одновременно и существует, и нет


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

#1 bad_selenium_ide_developer

bad_selenium_ide_developer

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

  • Members
  • Pip
  • 6 сообщений

Отправлено 05 декабря 2008 - 02:47

Здравствуйте, у меня возник еще один вопрос.
Я столкнулся с такой ситуацией. При записи теста в selenium ide я нажимаю на картинку, которая является ссылкой. Появляется команда
clickAndWait //img[@alt='какой-то текст1']

Потом при тестировании если я поставлю
verifyElementPresent xpath=//img[@alt=какой-то текст1], то никогда этой картинки нет, хотя реально иногда она на странице есть.

Дело в том, что реально в коде страницы нет такой картинки и ссылки, а есть код javascript, который судя по всему обрабатывается сервером (если такое вообще возможно). Во всяком случае, если сохранить эту страничку и открыть ее локально, то никаких ссылок с картинками действительно нет.

Я сначала пробовал добраться xpath'ом до таблицы и текста внутри <script></script> (который есть в странице, если есть картинка на странице), но никак не получилось это сделать: xpath не все тэги может обработать, судя по всему.

Потом я обнаружил, что когда есть эта картинка, то на странице появляется определенный текст (текст2), который можно найти с помощью verifytext.

Делаю я это все для того, чтобы при нажатии из теста на ссылку тест не валился, т.е. я хочу нажимать на эту картинку только когда она есть.
Так вот с помощью этого текста2 я практически обошел эту проблему, но все же возникают ситуации, когда есть этот текст, а картинки все равно нет. Эти ситуации не удается исключить.

Я слышал, что вроде бы есть selenium rc, в котором есть try-cath, но все-таки интересно, можно ли эту проблему обойти с помощью selenium ide? Ведь вроде все работает, единственный такой камень преткновения получился - не хочется из-за него заморачиваться selenium'ом-rc.
  • 0

#2 dlg99

dlg99

    Специалист

  • Members
  • PipPipPipPipPip
  • 609 сообщений
  • ФИО:Andrey Yegorov
  • Город:Redmond, WA

Отправлено 05 декабря 2008 - 06:46

Делаю я это все для того, чтобы при нажатии из теста на ссылку тест не валился, т.е. я хочу нажимать на эту картинку только когда она есть.
Так вот с помощью этого текста2 я практически обошел эту проблему, но все же возникают ситуации, когда есть этот текст, а картинки все равно нет. Эти ситуации не удается исключить.

Я слышал, что вроде бы есть selenium rc, в котором есть try-cath, но все-таки интересно, можно ли эту проблему обойти с помощью selenium ide? Ведь вроде все работает, единственный такой камень преткновения получился - не хочется из-за него заморачиваться selenium'ом-rc.


для этого есть flow control extension, port for Selenium IDE
комбинация label/gotoIf + storeElementPresent должна помочь.

еще очень полезно почитать форумы и wiki на http://www.openqa.org. для профилактики.
  • 0
Andrey Yegorov. Изображение

#3 bad_selenium_ide_developer

bad_selenium_ide_developer

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

  • Members
  • Pip
  • 6 сообщений

Отправлено 05 декабря 2008 - 21:02

комбинация label/gotoIf + storeElementPresent должна помочь.

Я до этого так и делал.
Например, так

storeElementPresent xpath=//img[@alt='текст1'] varExist1
gotoIf !(${varExist1}) targetExist1
clickAndWait //img[@alt='текст1']
label targetExist1

Но для той картинки, о которой я говорю, получалось всегда varExist1=false, хотя иногда принципиально могла выполниться команда
clickAndWait //img[@alt='текст1']
т.к. картинка реально на загруженной странице присутствовала.

Если же проверку выкинуть, то иногда картинки не оказывалось на странице, и тест валился.

Я тогда сделал так
storeTextPresent xpath=//img[@alt='текст2'] varExist1
gotoIf !(${varExist1}) targetExist1
clickAndWait //img[@alt='текст1']
label targetExist1

Дальше было все, как я описал. Я думал, что если в коде страницы нет чего-то такого:
<a href=""><img src=""></a>
то xpath принципиально никогда не найдет такую картинку, хотя команда clickAndWait //img[@alt='текст1'] как-то умудряется иногда выполняться. И мне это показалось очень странным.

А в коде и не было такого. Там примерно вот так:

<table><tr><td>
<FIELDSET>
<LEGEND>&nbsp;<B></B>&nbsp;</LEGEND>
<table cellspacing=2 cellpadding=2>
<tr>
<td>&nbsp;</td>
<td>
<table border=0 cellpadding=0 cellspacing=0 bgcolor=#a9b9c9><tr><td>

<table border=0 cellpadding=3 cellspacing=1>
<colgroup span=6 valign=middle>
<script>
tr(.........
tr(.......
tr(.......

</SCRIPT>
</table>
</td></tr></table>
..........

Внутри script есть код, используя который сервер добавляет на страницу картинки с сылкой. В коде даже названия картинки нет, которое можно посмотреть, если на странице на картинке нажать "свойства".
В прочем, это неважно, т.к. в <script> xpath'ом все равно не добраться.

Но вот сегодня я опять попробовал использовать xpath (как в самом первом случае), и теперь все работает!! Мистика какая-то. Я не знаю, может, в прошлый раз окошко было не в фокусе?

В общем, проблема отпала сама, извините за беспокойство.

dlg99, спасибо за ссылочки. Я правда пока не понял, как использовать Extensions. Я уже пользуюсь файлом goto_sel_ide.js Даррена де Риддера для циклов While и gotoIf (http://51elliot.blog...m-ide-goto.html), только путь к этому файлу нужно было вставить в поле Selenium Core Extension.


Я сейчас попробовал использовать "Recording every clicks on page"(http://wiki.selenium...ons and Formats)
но что-то пока особой разницы не заметил. Может, потом разберусь.

еще очень полезно почитать форумы и wiki

К советам я прислушиваюсь, просто я видимо не очень силен в английском, иногда возникают проблемы с составлением запросов для поисковика. Еще раз спасибо! :)
  • 0


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

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