rails 3.1, capybara-webkit, почему не работает page.execute_script? - PullRequest
3 голосов
/ 23 января 2012

После установки capybara-webkit я попытался выполнить тест внутри спецификации, вот мой тест:

Capybara.default_driver = :webkit

page.execute_script("$('#submit_direction').attr('value', '1');$('#quizForm').submit()")

Затем я получаю эту ошибку:

/home/sam/.rvm/gems/ruby-1.9.3-p0@global/gems/bundler-1.0.21/lib/bundler/runtime.rb: 136: предупреждение: небезопасный доступный для записи мир dir / home / sam / Documents / RoR в PATH, mode 040777 undefined | 0 | ReferenceError: Не удается найти переменную: $

Capybara :: Driver :: Webkit :: WebkitInvalidResponseError: Javascript не удалось выполнить

Есть идеи, пожалуйста?

1 Ответ

8 голосов
/ 23 января 2012

Полагаю, драйвер JS для capybara-webkit немного хитрый.

Со страницы Капибара Гитхуб :

Для простых выражений вы можете вернуть результат скрипта. Заметка что это может сломаться с более сложными выражениями:

result = page.evaluate_script ('4 + 4');

Однако из того кода, который у вас есть, похоже, что вы можете сделать довольно много вещей с самой Capybara.

$('#submit_direction').attr('value', '1')

можно заменить на:

page.find("#submit_direction").set('1')

и

$('#quizForm').submit()

можно заменить на:

page.click_on('quizForm')

см. Капибару документы по действиям капибары

...