Javascript не может получить текст, введенный Сахи в <input type = "text"> - PullRequest
0 голосов
/ 08 ноября 2011

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

1 Ответ

0 голосов
/ 09 ноября 2011

Я не смог воспроизвести вашу ошибку, все прошло нормально на моей установке 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
...