3

После установки Капибара-WebKit, я попытался попробовать тест внутри спецификации, вот мой тест:рельсы 3.1, capybara-webkit, почему page.execute_script не удается?

Capybara.default_driver = :webkit 

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

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

/home/sam/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/runtime.rb:136: warning: Insecure world writable dir /home/sam/Documents/RoR in PATH, mode 040777 undefined|0|ReferenceError: Can't find variable: $

Capybara::Driver::Webkit::WebkitInvalidResponseError: Javascript failed to execute

Любая идея пожалуйста?

+0

Не могли бы вы предоставить более подробную информацию о своем шаге? Я думаю, вы можете увидеть проблему для этого шага из-за неопределенного jQuery на странице в тот момент, когда вы пытаетесь выполнить этот шаг. Может быть, вы должны сделать это на событии загрузки окна. – oivoodoo

ответ

8

Я предполагаю, что драйвер capibara-webkit JS немного изволен.

От capybara github page:

For simple expressions, you can return the result of the script. Note that this may break with more complicated expressions:

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

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

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

может быть заменен:

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

и

$('#quizForm').submit() 

может быть заменен:

page.click_on('quizForm') 

см водосвинка docs on capybara actions

+0

Спасибо за ответ, я попробовал page.click_on ('quizForm'), но у меня нет кнопки для формы с значением «quizForm», вместо этого я отправляю ее с помощью js в ссылку, можно ли отправить форму с помощью capybara без использования кнопки формы? или, как скрыть кнопку и все еще быть видимым capybara? – simo

+0

Привет, Кевин, мне удалось отобразить кнопку отправки только во время тестирования: - если ENV ['RAILS_ENV'] == "test" % div = submit_tag 'Отправить ответ' , чтобы я мог зависеть от отправки кнопка только во время тестирования, спасибо! – simo