Не удается заполнить элемент скрытой текстовой области

F1, нужна помощь или подсказки с Скрытым элементом с использованием Robotframework.
Проблема состоит в том, что для заполнения любого текста в текстовой области мне нужно изменить состояние текстовой области с display:none; to display:block;

Необходимая текстовая область для ввода

Код, который я вижу в WebDev Tool

Сам код:

<div class="col-md-12">
<div class="cazary" style="width: 664px;">
    <div class="cazary-commands-wrapper">
        <ul class="cazary-commands-list">
            <li unselectable="on" title="Size" class="cazary-command-fontsize">Size</li>
        </ul>
        <ul class="cazary-commands-list">
            <li unselectable="on" title="Foreground Color" class="cazary-command-forecolor">Foreground Color</li>
        </ul>
        <ul class="cazary-commands-list">
            <li unselectable="on" title="Background Color" class="cazary-command-backcolor">Background Color</li>
        </ul>
        <ul class="cazary-commands-list">
            <li unselectable="on" title="Remove Format" class="cazary-command-removeformat">Remove Format</li>
        </ul>
    </div>
    <iframe class="cazary-edit" src="javascript:" style="height: 39px;"></iframe>
    <textarea id="summernote" class="required-preview field cazary-source" placeholder="Tell us all about your Advertisement. This description will be prominently displayed in your Advertisement notice. Feel free to adjust the fonts and background colour too." name="observations" cols="50" rows="10" style="display: none;"></textarea>
</div>

My Robotframework code tries:

Select Frame      //iframe[@class="cazary-edit"]
# First try
Input text      //textarea[@id="summernote"]    ${UniversalVariableforName}
# Second try
Input text      //iframe[@class="cazary-edit"]    ${UniversalVariableforName}
# Third try
Input text      //div[@class="cazary"]//iframe[@class="cazary-edit"]    ${UniversalVariableforName}
# Fourth try
Input text      //body[@class="empty"]    ${UniversalVariableforName}
# Fifth try
Input text      //iframe[@class="cazary-edit"]//body[@class="empty"]    ${UniversalVariableforName}

Возвращаемые ошибки: изображение

Может быть есть решение с ключевым словом Execute Javascript?


person Alex    schedule 15.12.2017    source источник
comment
текстовая область находится за пределами iframe, а также скрыта. вы не можете взаимодействовать с ним.   -  person Murthi    schedule 15.12.2017
comment
Вы можете ввести значение вручную?   -  person Murthi    schedule 15.12.2017
comment
Привет @Murthi, да, я могу вручную заполнить любую информацию в указанной текстовой области.   -  person Alex    schedule 15.12.2017
comment
Пожалуйста, не публикуйте фотографии ошибок. Потратьте время, чтобы правильно скопировать, вставить и отформатировать их в свой вопрос.   -  person Bryan Oakley    schedule 15.12.2017
comment
Если вы можете заполнить его вручную, скорее всего, есть еще один элемент, который фактически принимает ввод, а затем распространяет значение в текстовую область с помощью JS. Найдите другой и нацельтесь на него — манипулируя отображением текстовой области, ваш тест не будет воспроизводить реальное взаимодействие с пользователем.   -  person Todor Minakov    schedule 16.12.2017
comment
Как и @Todor, я не вижу ценности этого подхода к редактированию DOM. Как это повысит общую уверенность в том, что тестируемое приложение ведет себя так, как ожидалось? Поскольку конечный пользователь не будет делать то, что делаете вы, я бы рекомендовал найти правильное поведение пользователя и имитировать его.   -  person A. Kootstra    schedule 21.12.2017


Ответы (1)


Соответствующий <textarea> находится за пределами <iframe class="cazary-edit">. Следовательно, нам не нужно переключаться на <iframe>

Чтобы отправить текст в поле Input, вы можете попробовать:

  • Используйте xpath как:

    "//textarea[@class='required-preview field cazary-source' and @id='summernote']"
    
  • Click сначала поле Input.

  • Далее Clear поле Input.
  • Наконец попробуйте отправить текст.

Обновлять :

Поскольку соответствующие textarea имеют атрибут style, установленный как "display: none;", мы должны изменить его на "display: block;" через JavascriptExecutor, а затем отправить текст.

Пример кода Python:

driver.execute_script("document.getElementById('ID').style.display='block';") 
person DebanjanB    schedule 15.12.2017
comment
Привет @DebanjanB, я попробовал твое решение, к сожалению, оно не помогло. ‹br› Но я заметил, что нужный элемент скрыт, поэтому я некоторое время гуглил и нашел идеи по изменению состояния элемента DOM, в моем случае в textarea следует изменить style="display: none;" на display:block; ‹br› Тоже попробовал эту идею, но ничего не изменилось, вернул неудачу. - person Alex; 15.12.2017