Как я могу проверить DHTML с Selenium RC? - PullRequest
1 голос
/ 08 сентября 2010

У меня проблемы с тестированием частей моих html-страниц с помощью Selenium RC.Если элемент присутствует на странице и виден при загрузке страницы, проблем нет, Selenium RC может получить к нему доступ и получить его значение или записать в него (если это вход) и т. Д.

Но если элемент не виден и его можно сделать видимым только с помощью javascript, то селен не может с ним работать.Например, у меня есть 2 div:

<div id="row2" class="row" onclick="switchTo('row2e');">
   <div class="row label">Address</div>
   <div class="row data">${user.address}</div>
</div>
<div id="row2e" class="row-edit">
   <form id="address-form" name="address-form" method="post" onsubmit="">
     <div class="row label">Address-Must be 5-25 letters or numbers</div>
     <input type="text" id="address" name="address" value="${user.address}"/>
     <button>Change address</button>
   </form>
 </div>

Когда страница загружена, div «row2» виден, а «row2e» скрыт.Когда я нажимаю «row2», div изменяются (с использованием javascript), так что «row2» будет скрыт, а «row2e» будет виден.На данный момент Selenium RC не может управлять вводом в div "row2e".

У меня та же проблема при изменении больших частей страницы с помощью JavaScript (без отправки страницы).

Есть идеи, почему это происходит?

Ответы [ 2 ]

1 голос
/ 08 сентября 2010

Вы заставляете RC подождать, пока произойдут изменения? Во многих средах сценариев пользовательского интерфейса бегун не будет ждать интерактивных результатов того, что вы сделали, если вы не скажете это. Обычно, используя iMacros (Selenium для бедняков), мне остается только ждать автоматических обратных передач, но даже выполнение JS может занять больше времени, чем быстрый компьютер с Selenium готов ждать. Перед сном дайте ему поспать полсекунды.

0 голосов
/ 12 сентября 2010

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

Для быстрого примера вы можете набрать:

Click //div[@id="row2"]
Click //div[@id="row2e"]//button

Если кнопка является динамическойЭлемент TestPlan будет ждать несколько секунд, пока он появится, и затем щелкнет по нему.Но по большей части вы просто используете страницу как пользователь, и TestPlan выяснит, что делать.

Кстати, он может использовать Selenium в качестве бэкэнда, в дополнение к HTMLUnit.

...