Текстовое поле только для чтения - PullRequest
2 голосов
/ 10 января 2011

У меня есть текстовое поле только для чтения на моем сайте.И мне нужно ввести дату, используя огурец и watir.Но я не могу установить какое-либо значение.Даже передавая значение даты с помощью метода value =, я не могу ничего сделать.Есть календарь JavaScript.

Я написал:

browser.text_field(:name => "deal[start_date]").value = 'test'

, он показывает следующую ошибку:

Watir::Exception::ObjectReadOnlyException: Watir::Exception::ObjectReadOnlyException
    from /var/lib/gems/1.8/gems/watir-webdriver-0.1.7/lib/watir-webdriver/elements/element.rb:252:in `assert_writable'
    from /var/lib/gems/1.8/gems/watir-webdriver-0.1.7/lib/watir-webdriver/elements/text_field.rb:24:in `value='
    from (irb):10

Пожалуйста, помогите мне, у меня проблема.

Ответы [ 4 ]

2 голосов
/ 24 марта 2011

Это соответствует тому, что заметил xboxer21. Я обнаружил, что этот код работает для меня на сайте с похожим виджетом календаря.

Допустим, у вас есть HTML-форма с полями ввода текста, которые установлены только для чтения:

<form name="FindRange" method="post" action="FindRange.asp" onsubmit="return false">
 ...
 <table width="100%" border="0" cellspacing="0" cellpadding="0">
 <tr>
  <td colspan="3" class="FieldLabel">
    <input type="text" name="FromDate" size="16" readonly="true" style="width:85px; background-color:#F8F6E7;">
  </td>
  <td>
     <input type="text" name="ToDate" size="16" readonly="true" style="width:85px; background-color:#F8F6E7;">
  </td>
 </tr>
 ...
</form>

Использование кода типа '@ ie.text (: name, "FromDate"). Set ("23.03.2011") "в вашем скрипте Ruby Watir приведет к ошибке в Ruby, сообщающей, что поле доступно только для чтения , Но использование метода eval () может позволить вам использовать Javascript для установки полей только для чтения за кулисами.

#Code above these lines instantiate the Watir object in @ie and navigate to the page   #containing the HTML form
#named 'FindRange'
@ie.document.parentWindow.eval("document.FindRange.FromDate.value = '3/23/2011'")
@ie.document.parentWindow.eval("document.FindRange.ToDate.value = '3/24/2011'")
0 голосов
/ 11 января 2011

Ну, текстовое поле доступно только для чтения, как говорится в сообщении об ошибке. Это означает, что это не может быть изменено. Как бы вы изменили значение текстового поля без Watir? Можете ли вы предоставить ссылку на страницу или соответствующий HTML?

0 голосов
/ 11 февраля 2011

Это то, что я сделал, чтобы ввести дату в текстовом поле только для чтения. Используемый сценарий календаря JS был http://www.dynarch.com/projects/calendar/

Рядом с полем даты есть маленький значок, который отображает виджет календаря после нажатия на него.

browser.image(:id,"datewidget-trigger").click # Will display the Calendar 
browser.send_keys("{ENTER}") # Will select current date

Если вы хотите выбрать будущую или предыдущую дату

browser.send_keys("{LEFT}")
browser.send_keys("{RIGHT}")

Это было проверено только с использованием IE.

0 голосов
/ 10 января 2011

Попробуйте выполнить сам JavaScript.

browser.document.parentWindow.execScript("Date_JS_script('date')") 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...