Javascript не может получить текст, введенный Сахи в <input type = "text">
TL;DR: в бехате + норка (@javascript
С Sahi) сценарий, 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 не может получить то, что было сказано Сахи во время Сценария.
Я застрял на этом, я чувствую, что что-то упустил.
Ссылки:
- Проект Github (с
*.features
): https://github.com/clemherreman/behatdemo - Живой сайт: http://behatdemo.widop.com/js-square
Версии:
- Behat: 2.1.2
- Норка: 1.1.1
- Сахи: 3,5
- PHP: 5.3.6
1 ответ
Я не смог воспроизвести вашу ошибку, все прошло нормально на моей установке Behat/Mink/Sahi: http://screencast.com/t/2rTHo7jj
Сценарий пройден
Я использую Sahi 3.5 с Behat 2.1.2 и Mink 1.1.1 на OSX с последней версией Chrome & PHP 5.3.8-ZS5.5.0
Попробуйте запустить тест под Chrome с:
default:
context:
parameters:
base_url: YOURBASEURL
browser: chrome