3

安装水豚,WebKit的,我想尝试一个规范的内部测试,这是我的测试:rails 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

我猜capybara-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提交它,是否可以提交表单水豚没有使用表格按钮?或者,如何隐藏按钮仍然可以看到水豚? – simo

+0

嗨凯文,我已经设法呈现提交按钮,只测试时: - 如果ENV ['RAILS_ENV'] ==“测试” %div = submit_tag'提交答案' ,这样我可以依赖提交只有在测试时按钮,谢谢! – simo