rails 3.1,capybara-webkit,为什么page.execute_script失败?

sim*_*imo 3 ruby-on-rails-plugins capybara ruby-on-rails-3 capybara-webkit

安装capybara-webkit后,我尝试在规范中尝试测试,这是我的测试:

Capybara.default_driver = :webkit

page.execute_script("$('#submit_direction').attr('value', '1');$('#quizForm').submit()")
Run Code Online (Sandbox Code Playgroud)

然后,我收到此错误:

/home/sam/.rvm/gems/ruby-1.9.3-p0@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:136:警告:不安全的世界可写dir/home/sam/Documents/PATR中的RoR,模式040777 undefined | 0 | ReferenceError:找不到变量:$

Capybara :: Driver :: Webkit :: WebkitInvalidResponseError:Javascript无法执行

有什么好主意吗?

Kev*_*vis 8

我猜猜capybara-webkit JS驱动程序有点狡猾.

capybara github页面:

对于简单表达式,您可以返回脚本的结果.请注意,这可能会破坏更复杂的表达式:

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

但是,根据你在那里的代码,看起来你可以与Capybara本身做很多事情.

$('#submit_direction').attr('value', '1')
Run Code Online (Sandbox Code Playgroud)

可以替换为:

page.find("#submit_direction").set('1')
Run Code Online (Sandbox Code Playgroud)

$('#quizForm').submit()
Run Code Online (Sandbox Code Playgroud)

可以替换为:

page.click_on('quizForm')
Run Code Online (Sandbox Code Playgroud)

看到关于水豚行动的水豚文献