Мои приемочные тесты Watir, как правило, не проходят в тех случаях, когда я не использую функцию sleep
Руби.Вот пример:
it 'Edit case: should edit display name of TEST' do
all_row = @browser.trs(:css => ".ui-sortable-data-row")
# note: this displays a detail view of the selected item of a table
all_row[0].td.fire_event :click
# click on edit button (activate edit mode)
#sleep 1
@browser.span(:css => "p-header a > span.fa-pen").fire_event :click
# set name value
@browser.text_field(:id => "name").set("test name")
# ...
end
Если отсутствует вызов функции sleep 1
(сон в течение 1 секунды), тест завершится ошибкой со следующим сообщением:
Failure/Error: @browser.text_field(:id => "name").set("test name")
Watir::Exception::ObjectDisabledException:
element present, but timed out after 10 seconds, waiting for #<Watir::TextField: located: true; {:id=>"name", :tag_name=>"input"}> to be enabled
Однако,если я явно вызываю sleep 1
, текстовое поле («имя») включено и может быть установлено.
Итак, мой вопрос: является ли использование функции sleep
хорошей практикой или есть лучший способ избежать этих проблем?