Провел немного больше испытаний и теперь достиг удовлетворительного результата. Я делал несколько вещей, которые, как я теперь считаю, неуместны, а именно пытался установить для атрибута disabled
недопустимые значения true и false, например:
$('input.submit').attr('disabled', true);
$('input.submit').attr('disabled', false);
Глядя на спецификацию HTML-форм показано, что отключенный атрибут не принимает значения, а только его наличие указывает на то, что элемент отключен. Модификация моего кода в соответствии с этим и удаление атрибута, указывающего на включение элемента, похоже, добились цели:
$('input.submit').attr('disabled', true);
//This time we remove the disabled attribute rather than setting it to false.
$('input.submit').removeAttr('disabled');
Примечание. Я по-прежнему устанавливаю значение disabled на true
, поскольку не могу определить, как установить атрибут без установки значения, см. в этом сообщении SO для получения дополнительной информации.
Используя вышеупомянутое, я теперь могу использовать Geb, чтобы утверждать отключенное / включенное состояние таких элементов:
//Check that something is disabled.
deleteSelectedButton.@disabled == 'true'
//Check that something is enabled.
deleteSelectedButton.@disabled == 'false'
Примечание: Geb, похоже, требует строкового литерала, указывающего ожидаемый статус, а не логическое значение, которое из-за iirc не подтвердило мои утверждения.
Вот и все - теперь все работает хорошо, и я продолжаю писать множество тестов Geb! Надеюсь, что это объяснение пригодится другим.