Я писал автоматизацию тестирования (в Selenium2 Java, Firefox 3.6) приложения, которое использует много ExtJS. Мне удалось довольно хорошо обойти мощные идентификаторы морфируемых элементов, но на одной странице поведение кода поставило меня в тупик. Есть текстовое поле, в котором можно указать имя пользователя. На него нельзя щелкнуть, пока не будет нажата кнопка редактирования, а затем Firebug сможет найти текстовое поле. Если текст введен и затем сохранен, текст отображается на странице, но нигде в коде HTML не отображается. Даже если нажать кнопку редактирования еще раз, чтобы сделать текстовое поле доступным, я не могу получить значение текстового поля. Это код для метки и текстового поля в режиме редактирования:
<div class="x-form-item " tabindex="-1">
<label class="x-form-item-label" style="width: 250px;" for="ext-comp-1022">Interface Username:</label>
<div id="x-form-el-ext-comp-1022" class="x-form-element" style="padding-left: 255px;">
<input id="ext-comp-1022" class=" x-form-text x-form-field " type="text" name="interfaceUsername" autocomplete="off" size="20" style="width: 292px;">
</div>
Обратите внимание, что метка Username: отображается в HTML, как и ожидалось, но для самого текстового поля нет ничего. Я подозреваю, что вызов javascript получает и отображает текст в текстовом поле, но я совсем не знаком с ExtJS. Я проверил этот пост но это не относилось к получению текста, в основном это была проблема с изменением идентификатора. Итак, я хотел бы понять, как определить, какой скрипт вызывается, и как использовать executeScript для захвата текста текстового поля с ним. Я могу ввести текст в поле с помощью Selenium, сохранить его с помощью Selenium и увидеть его на странице на глаз, поэтому у меня нет проблем с самим кодом Selenium, определяющим местонахождение элемента.
Спасибо, Сабрина