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 не может получить то, что было сказано Сахи во время Сценария.

Я застрял на этом, я чувствую, что что-то упустил.

Ссылки:

Версии:

  • 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
Другие вопросы по тегам