TL; DR: в сценарии Behat + Mink (@javascript
w / Sahi) Сахи вводит некоторый текст в <input>
, и Javascript на странице не может получить то, что было введено Сахи
ОБНОВЛЕНИЕ:
Решение: загрузка последней версии Sahi устранила проблему.Независимо от ошибки, она была исправлена.
Контекст
Я создаю небольшой демонстрационный веб-сайт, чтобы показать моей команде, что может сделать Behat + Mink.Есть несколько страниц, где можно ввести размер квадрата и получить периметр этого квадрата.Одна страница использует простой старый метод POST, другая страница использует Javascript для вычисления периметра
URL «JS-страницы»: http://behatdemo.widop.com/js-square
Чтобы показать моей команде, что тестирование javascript возможноЯ использую Sahi в качестве драйвера Mink, однако, похоже, он не работает.Я написал сценарий, где пользователь вводит 6
в качестве длины стороны квадрата и получает 24
в качестве периметра ([ссылка на файл на github] (https://github.com/clemherreman/behatdemo/blob/master/features/js_square.feature#L7))
@javascript
Scenario: Inputting a valid side size
Given I am on "/js-square"
When I fill in "side" with "6"
And I press "Calculate"
And I wait for the result to appear
And I wait a little
Then I should see "Perimeter (using js): 24 cm"
Примечание: And I wait a little
это шаги отладки, которые ждут 10 секунд, чтобы иметь возможность посмотреть, что отображается в окне Sahi Firefox
Проблема
Кажется, что фрагмент JavaScript, который вычисляет периметрне может получить 6
, введенный Сахи. Вот код ([ссылка на файл на github] (https://github.com/clemherreman/behatdemo/blob/master/website/views/js-square.twig#L27))
Вместо "Perimeter (using js): 24 cm"
я получаю "Perimeter (using js): Error cm"
.
(function($) {
$('form').submit(function(e) {
e.preventDefault();
// #side is a <input type="text"> tag, where user input a square side length
var side = parseFloat(jQuery('#side').val()) || NaN;
var perimeter = side*4.0 || 'Error';
$('#sidebar').text('Perimeter (using js): '+perimeter+ ' cm');
});
})(jQuery);
Отладка / Идеи
После некоторого исследования выясняется, что jQuery('#side').val()
возвращает пустую строку, поэтому вместо периметра отображается «Ошибка». Кажется, что Javascript не может получить то, что было сказано Сахи во время сценария .
Я застрял на этом, я чувствую, что что-то упустил.
Ссылки :
Версии :
- Behat: 2.1.2
- Mink: 1.1.1
- Сахи: 3,5
- PHP: 5,3,6